gcc 将共享库与依赖库链接

Posted

技术标签:

【中文标题】gcc 将共享库与依赖库链接【英文标题】:gcc linking shared libraries with dependent libraries 【发布时间】:2012-06-17 03:10:19 【问题描述】:

我有一个包含多个可执行目标和多个共享库的复杂项目。共享库目前没有链接它们的依赖共享库,结果是用于构建可执行文件的链接器参数非常长且难以维护。我想添加依赖项,以便 Makefile 变得更干净。

我想添加以下内容(示例):

gcc -shared -o libshared.so -lshared_dependent1 -lshared_dependent2 objfile1.o objfile2.o

有没有办法测试 libshared.so 中的所有符号是否会根据该行解析? 如果指定的任何 shared_dependent 库是不必要的,有没有办法打印出来?

提前致谢。

【问题讨论】:

【参考方案1】:

我知道如何强制没有未定义的符号:

-Wl,--no-undefined

因为 autotools 经常抱怨 Windows 上缺少此功能。

我不知道是否可以检查是否有任何未使用的库,除了将它们一一排除。

【讨论】:

以上是关于gcc 将共享库与依赖库链接的主要内容,如果未能解决你的问题,请参考以下文章

GCC 配置文件引导优化与共享库,无法控制可执行文件

如何将共享库与 --as-needed 与 automake 链接?

使用预编译的C共享库与JNI / NDK

动态链接库与共享内存:

CMake和静态库顺序

将共享库与 dlopen 一起使用 - 共享对象找不到加载程序导出的符号