g ++ 5.5未链接共享库

时间:2019-03-21 15:26:12

标签: c++ linker g++ shared-libraries

我正在尝试从个人计算机中移植链接到几个共享库code.cpplibA.so的简单程序libB.so(运行最新的Arch Linux安装)在装有Ubuntu 16.04 LTS的计算机上。编译库工作正常,但是编译undefined reference时遇到很多code.cpp错误。

我怀疑这是由于libA.so链接到libB.so造成的,而libA.solibB.so在Ubuntu 16.04上都可以正常编译,而奇怪的是{{尽管有编译标志libA.so,但1 {}仍未与libB.so链接,这在生成二进制文件时又导致未定义的引用。另一方面,在Arch Linux上,-lB确实与libA.so链接,所以libB.so告诉我。

我起初虽然问题可能与GCC版本不匹配,但是即使在Ubuntu 16.04上安装并使用GCC 8之后,问题仍然存在。

1 个答案:

答案 0 :(得分:1)

  1. 没有人能保证不仅在不同的Linux发行版之间,甚至在同一Linux发行版的不同版本之间,都具有完全的兼容性。曾尝试将它称为LSB进行统一,但不幸的是,它失败了。
  2. 不同的C ++编译器通常具有不兼容的C ++库。这也是一个很大的痛苦。
  3. 强烈建议您重新编译目标平台上的所有内容。
  4. 关于加载共享库存在歧义。对于某些系统,如果您链​​接与库B链接的库A,则会使库B的符号可用于您的程序。对于某些系统而言并非如此。
相关问题