1

我正在构建一个需要动态链接到我的项目的库。输出是一个 .so 文件,所以我认为我在正确的轨道上。我担心它在编译时的链接方式——通过指定它的 makefile 的位置并依赖于一堆我以前从未遇到过的宏。

我可以假设因为我正在构建一个 .so 库(而不是 .a),我实际上是在动态链接吗?或者 .so 库是否可以静态链接,在这种情况下,我需要拆分 make/config 文件以更好地了解发生了什么?

谢谢,

安德鲁

4

1 回答 1

0

我不熟悉可执行文件和共享对象的内部结构,所以我只能给出一些实用的提示。

假设您使用gcc,在将目标文件链接到库时应该有-shared选项 - 这种方式ld(由 调用gcc)使共享对象而不是可执行二进制文件。

gcc -shared -o libabc.so *.o ...

当您将某些应用程序与此 libabc.so 链接时,它应该没有错误地链接,然后使用ldd命令您应该能够看到libabc.so它的依赖项。

$ ldd app
    ...
    libabc.so => ...............
于 2010-12-14T10:54:33.600 回答