我有一个基于C ++的项目(许多源文件),通过makefile使用gnu make编译。 我有一个链接库的应用程序,比如说mylib。现在mylib由其他开发人员拥有。我看到生成库二进制文件的路径中存在2个文件 libmylib.so(共享对象)和libmylib.a(静态库归档文件)
我的应用程序makefile有以下链接器选项来链接库mylib
LDFLAGS + = - l:mylib ......
问题是我的应用程序可执行文件中链接的库mylib的版本是什么
共享对象libmylib.so还是静态版本libmylib.a?
如何确定,是否还有其他makefile选项来管理它?
答案 0 :(得分:4)
默认情况下,在非嵌入式Linux上,您将获得动态链接。如果您想更改它,可以在LDFLAGS
;
LDFLAGS+= -Wl,--Bstatic -lmylib -Wl,--Bdynamic
(可能需要引号)这将仅为此lib切换为静态,然后返回默认动态。