可能静态链接共享对象库?

问题描述:

我正在建立一个需要动态链接到我的项目的库。输出是一个.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 => ...............