【发布时间】:2019-03-21 15:26:11
【问题描述】:
我正在尝试将一个简单的程序 code.cpp 从我的个人计算机(运行最新的 Arch Linux 安装)上的两个共享库 libA.so 和 libB.so 移植到一台装有 Ubuntu 16.04 的机器上LTS。编译库工作得很好,但是在编译 code.cpp 时我得到了很多 undefined reference 错误。
我怀疑这是因为libA.so 与libB.so 相关联,而libA.so 和libB.so 在Ubuntu 16.04 上编译正常,奇怪的是libA.so 没有与@987654332 相关联@,尽管编译标志 -lB,这反过来会在生成二进制文件时导致未定义的引用。另一方面,在 Arch Linux 上,libA.so 确实与libB.so 链接,或者ldd 告诉我。
我最初虽然问题可能是 GCC 版本不匹配,但即使在 Ubuntu 16.04 上安装和使用 GCC 8 后,问题仍然存在。
【问题讨论】:
-
如果你想要一个实际的答案,需要minimal reproducible example。
标签: c++ linker g++ shared-libraries