定制动态链接和静态链接
2011-01-10 16:47
274 查看
http://linux.chinaunix.net/bbs/viewthread.php?tid=1176141
谢谢各位回复,我已经找到答案了。
QUOTE:
1,库文件名为什么非要相同,不同文件名即可以解决问题
2,动态库和静态库的执行效率几乎相同,完全可以选 ...
bekars 发表于 2010-12-24 13:21
是可以用不同的文件名字,但是我的目的是想要知道根本的原因,而不是解决问题就行了。
至于为什么这么做,因为我目前做的一个项目中,需要连接一个库,这个库是他们提供的,在安装交叉编译环境的时候自动生成了lib*.so和lib*.a两种版本,这样我怎么能改个名字就行呢?
原来-Bstatic和-Bdynamic这两个链接器选项需要用gcc的-Wl,option来传递才行。
我最新写的Makefile和源代码.
Makefile:
CFLAGS+=-DMYFLAG
all:testapp
testapp:test_all liba.so liba.a libb.so libb.a /
test_static test_statica_staticb test_statica_dynamicb test_dynamica_staticb test_dynamica_dynamicb
myliba.o:myliba.c
mylib.o:mylibb.c
test_all:main.c myliba.o mylibb.o
gcc -o $@ $^
liba.so:myliba.o
gcc -shared -o liba.so myliba.o
libb.so:mylibb.o
gcc -shared -o libb.so mylibb.o
liba.a:myliba.o
ar -r liba.a myliba.o
libb.a:mylibb.o
ar -r libb.a mylibb.o
test_static:main.c
gcc -o $@ $< -L./ -static -la -lb
test_statica_staticb:main.c
gcc -o $@ $< -L./ -Wl,-Bstatic -la -lb -Wl,-Bdynamic
test_statica_dynamicb:main.c
gcc -o $@ $< -L./ -Wl,-Bstatic -la -Wl,-Bdynamic -lb
test_dynamica_staticb:main.c
gcc -o $@ $< -L./ -Wl,-Bdynamic -la -Wl,-Bstatic -lb -Wl,-Bdynamic
test_dynamica_dynamicb:main.c
gcc -o $@ $< -L./ -la -lb
.PHONY:clean
clean:
rm *.o *.a *.so test*
复制代码
谢谢各位回复,我已经找到答案了。
QUOTE:
1,库文件名为什么非要相同,不同文件名即可以解决问题
2,动态库和静态库的执行效率几乎相同,完全可以选 ...
bekars 发表于 2010-12-24 13:21
是可以用不同的文件名字,但是我的目的是想要知道根本的原因,而不是解决问题就行了。
至于为什么这么做,因为我目前做的一个项目中,需要连接一个库,这个库是他们提供的,在安装交叉编译环境的时候自动生成了lib*.so和lib*.a两种版本,这样我怎么能改个名字就行呢?
原来-Bstatic和-Bdynamic这两个链接器选项需要用gcc的-Wl,option来传递才行。
我最新写的Makefile和源代码.
Makefile:
CFLAGS+=-DMYFLAG
all:testapp
testapp:test_all liba.so liba.a libb.so libb.a /
test_static test_statica_staticb test_statica_dynamicb test_dynamica_staticb test_dynamica_dynamicb
myliba.o:myliba.c
mylib.o:mylibb.c
test_all:main.c myliba.o mylibb.o
gcc -o $@ $^
liba.so:myliba.o
gcc -shared -o liba.so myliba.o
libb.so:mylibb.o
gcc -shared -o libb.so mylibb.o
liba.a:myliba.o
ar -r liba.a myliba.o
libb.a:mylibb.o
ar -r libb.a mylibb.o
test_static:main.c
gcc -o $@ $< -L./ -static -la -lb
test_statica_staticb:main.c
gcc -o $@ $< -L./ -Wl,-Bstatic -la -lb -Wl,-Bdynamic
test_statica_dynamicb:main.c
gcc -o $@ $< -L./ -Wl,-Bstatic -la -Wl,-Bdynamic -lb
test_dynamica_staticb:main.c
gcc -o $@ $< -L./ -Wl,-Bdynamic -la -Wl,-Bstatic -lb -Wl,-Bdynamic
test_dynamica_dynamicb:main.c
gcc -o $@ $< -L./ -la -lb
.PHONY:clean
clean:
rm *.o *.a *.so test*
复制代码
相关文章推荐
- Link2005----设置为动态链接和静态链接的问题
- linux下动态链接和静态链接
- 动态链接和静态链接
- 静态库 动态库 静态链接 动态链接 编译器cl.exe 链接器link.exe
- 动态链接与静态链接对比
- 动态链接库、静态链接库;动态链接、静态链接
- 动态链接和静态链接
- 动态链接DLL与静态链接LIB
- 动态链接与静态链接的区别
- 动态链接和静态链接的区别
- 关于动态链接与静态链接
- 动态链接和静态链接的区别
- 静态链接和动态链接区别
- 静态链接和动态链接
- 动态链接和静态链接的区别
- VC程序采用动态链接库方式且静态链接MFC方法
- 静态链接与动态链接的区别
- [置顶] ELF文件格式与动态链接/静态链接(Linux下 可执行文件的格式)
- 动态链接和静态链接
- mingw qt(可以去掉mingwm10.dll、libgcc_s_dw2-1.dll、libstdc++-6.dll的依赖,mingw默认都是动态链接gcc的库而TDM是静态链接gcc库,tdm版本更好用。用aspack压缩没有问题。qt本身不使用异常处理)good