这将链接哪些库对 - 静态或共享对象(What library would it link agai

2019-10-17 16:37发布

我已经使用GNU通过一个makefile使编译一个基于C ++的项目(多源文件)。 我有一个链接库的应用程序,说MYLIB。 现在MYLIB被一些其他开发者拥有。 我看到存在于路径2个文件,其中库二进制文件生成即libmylib.so(共享对象)和libmylib.a添加(静态库归档文件)

我的应用程序生成文件下面有链接器选项链接库MYLIB

LDFLAGS + = - 1:mylib中...

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

将共享对象libmylib.so或静态版本libmylib.a添加?

会是怎样决定,会不会有其他的makefile选项来管理呢?

Answer 1:

默认情况下,在非嵌入式Linux,你会得到动态联动。 如果你想改变这种状况,你可以指定它LDFLAGS ;

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

(可能需要使用引号),这将切换到静态这个LIB而已,然后再返回到默认的动态。



文章来源: What library would it link against - static or shared object