它将链接哪个库 - 静态或共享对象

时间:2013-02-06 14:16:34

标签: linux makefile shared-libraries static-libraries

我有一个基于C ++的项目(许多源文件),通过makefile使用gnu make编译。 我有一个链接库的应用程序,比如说mylib。现在mylib由其他开发人员拥有。我看到生成库二进制文件的路径中存在2个文件   libmylib.so(共享对象)和libmylib.a(静态库归档文件)

我的应用程序makefile有以下链接器选项来链接库mylib

LDFLAGS + = - l:mylib ......

问题是我的应用程序可执行文件中链接的库mylib的版本是什么

共享对象libmylib.so还是静态版本libmylib.a?

如何确定,是否还有其他makefile选项来管理它?

1 个答案:

答案 0 :(得分:4)

默认情况下,在非嵌入式Linux上,您将获得动态链接。如果您想更改它,可以在LDFLAGS;

中指定
LDFLAGS+= -Wl,--Bstatic -lmylib -Wl,--Bdynamic

(可能需要引号)这将仅为此lib切换为静态,然后返回默认动态。