1

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

我的应用程序生成文件具有以下链接器选项来链接库 mylib

LDFLAGS+=-l:mylib ...

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

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

将如何决定,是否有任何其他 makefile 选项来管理它?

4

1 回答 1

4

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

LDFLAGS+= -Wl,--Bstatic -lmylib -Wl,--Bdynamic

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

于 2013-02-06T14:25:48.400 回答