c++ - 我怎么知道哪些库被动态链接到静态库中?

标签 c++ linker libraries loader

假设我有一个 libmy.a 静态库,我想知道它动态链接了哪些库。实际上我需要以下内容:我将创建一个新的动态库,比如 libmy2.so,它将链接一个 .o 文件(目标文件)和 libmy.a。所以我想知道哪些库最终会加载 libmy2.so。

最佳答案

静态库不链接其他库,无论是静态库还是动态库。

好的,假设有两个 C++ 文件,a.cp​​p 和 b.cpp。

g++ -c a.cpp -o a.o         // compile a.cpp to a.o
rm -f lib1.a                // no existing lib1.a (this is not essential)
ar rvs lib1.a a.o           // create library lib1.a and add a.o to it
g++ -c b.cpp -o b.o         // compile b.cpp to b.o
ar rvs lib1.a b.o           // ad b.o to existing lib1.a

您显然可以在阶段之间进行任意数量的复制,以生成具有您想要的名称的库。你也可以这样做

ar --help

获取可能会略微简化流程的 ar 选项。坦率地说,这是一个我几乎从不使用的命令,除了从对象列表构建静态库。

关于c++ - 我怎么知道哪些库被动态链接到静态库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6148637/

相关文章:

c++ - 我如何知道 k-server 动态解决方案的最佳路径位于数组 cost[ i ][ j ][ k ][ t ] 中的什么位置?

c++ - Qt/C++ - "Including"头文件导致大量错误(垃圾邮件)

c++ - C++ 链接器是否会自动内联函数(没有 "inline"关键字,在 header 中没有实现)?

android - Eclipse 中的 "Android Private Libraries"文件夹是什么?

android - 将第二个 JNI 库添加到我的 Android 项目 (OpenCV) 后出错

c++ - 外部链接的 C 库中的异常传播

c++ - 如何判断Qt是否调试

c++ - 跳表开关盒问题

c++ - 使用cmake链接错误

库中的.text、.data、.bss .a 文件可以分成单独的部分吗