c++ - 使用 libtool 链接静态库

标签 c++ linux static-libraries libtool

如何使用 libtool 链接静态库 (.a)

我正在创建一个 apache 模块 (mod_shib_22.so),它使用三个 RSA 库 libcertc.alibcertcsp.alibbsafe.a 我正在将这些库与 -lcertc -lcertcsp -lbafe 链接,但是在加载模块时出现“符号未定义”错误:

./apachectl -k stop httpd: Syntax error on line 426 of /usr/local/apache2/conf/httpd.conf:
Cannot load /usr/local/lib64/shibboleth/mod_shib_22.so into server:  /usr/local/lib64/shibboleth/mod_shib_22.so: undefined symbol: T_GetDynamicList

我在 Makefile 中使用这些行:

LDFLAGS = -L../../libraries/Crypto-C-6.4.0.3/lib/linux_lsb30_x86_64 -L../../libraries/Cert-C-2.9.0.0/lib/LinuxLSB30_x86_64/release_mt
LIBOBJS = 
LIBS = -lxerces-c -L/usr/local/lib64 -llog4shib -lnsl -lcertc -lcertcsp -lbsafe -ldl

最佳答案

将 DSO(在本例中为 Apache 模块)与静态库链接不能保证有效,并且可能无法正常工作,具体取决于静态库中对象的构建方式。通常静态库中的对象不是用 position independent code 构建的已启用,但 DSO 需要位置独立代码。

关于c++ - 使用 libtool 链接静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14504417/

相关文章:

c++ - 使用 std::type_info 在 natvis 中进行转换

linux - 在日志文件中搜索过去 24 小时内的错误

linux - nodejs v5.10.1 无法再获取我的主机地址?

linux - 使用 linux 脚本命令

c++ - 我应该将 sqlite3 链接为纯目标代码还是 C++ 应用程序中的静态库?

c++ - 使用平台工具集 v100 的 Visual Studio 2012。无法打开源文件 "atlbase.h"

c++ - 与 memcpy 相比,未对齐内存访问的 reinterpret_cast 的有效用例?

c++ - 为什么库实现者使用短名称?

c++ - 在哪里可以下载 c 的标准数学库的静态库/头文件?

shared-libraries - 共享库与静态库的加载时间