无法将SYSV静态lib与GNU / Linux链接

时间:2017-11-20 13:38:25

标签: c++ linux gcc abi

我想链接到一些外部静态库,让我们说somelib。我试图通过cmake中的FIND_LIBRARY执行此操作,它似乎正常工作 - cmake找到libsomelib.a但是链接存在问题:

(somelib.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC

我确信somelib是在启用PIC的情况下编译的。一些有趣的事情: file somelib.o显示FpgaPicAPI.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped,这是我项目的一个目标文件file的{​​{1}}输出。ELF 64-bit LSB relocatable, x86-64, version 1 (GNU/Linux), not stripped。据我所知,SYSV表示“此目标文件不使用任何特定于操作系统的功能”但是我可以将这些目标文件与不同的OS / ABI链接吗?第二件事是编译器版本:somelib使用gcc 5.4.0并且我必须使用4.8.5但是我认为这不是问题 - 我有使用somelib的侧面项目并且它适用于gcc 4.8 (可执行文件SYSV btw)。不知道接下来要检查什么。

0 个答案:

没有答案