可能静态链接共享对象库?
问题描述:
我正在建立一个需要动态链接到我的项目的库。输出是一个.so文件,所以我认为我在正确的轨道上。我对它在编译时被链接的方式感到担忧 - 通过指定它的makefile的位置以及取决于一堆我以前从未遇到过的宏。可能静态链接共享对象库?
我可以假设,因为我建立一个.so库(而不是.a),我实际上是动态链接的吗?或者有可能.so库是静态链接的,在这种情况下,我需要翻译make/config文件以更好地理解发生了什么?
感谢,
安德鲁
答
我不熟悉的可执行文件和共享对象的内部结构,所以我只能提供一些实用的提示。这样ld
(被称为gcc
),使共享对象,而不是可执行的二进制 -
假设你使用gcc
,应该链接目标文件时到图书馆有-shared
选项。
gcc -shared -o libabc.so *.o ...
当您使用此libabc.so应该没有错误链接,之后与ldd
命令,你应该能够看到libabc.so
其依赖关系间的链接某些应用。
$ ldd app
...
libabc.so => ...............