我正在构建一个需要动态链接到我的项目的库。输出是.so文件,所以我认为我走在正确的轨道上。我担心它在编译时被链接的方式 - 通过指定其makefile的位置并依赖于一堆我以前从未遇到过的宏。
我可以假设,因为我正在构建一个.so库(而不是.a),我实际上是动态链接的吗?或者.so libs是否可以静态链接,在这种情况下我需要拆分make / config文件以更好地理解发生了什么?
谢谢,
安德鲁
答案 0 :(得分:0)
我不熟悉可执行文件和共享对象的内部结构,所以我只能提供一些实用的提示。
假设您使用gcc
,将目标文件链接到库时应该有-shared
选项 - 这样ld
(由gcc
调用)会生成共享对象而不是可执行文件二进制的。
gcc -shared -o libabc.so *.o ...
当您将某个应用程序与此libabc.so链接时,它应该链接没有错误,然后使用ldd
命令,您应该能够在其依赖项中看到libabc.so
。
$ ldd app
...
libabc.so => ...............