我知道这里没有很多人有心灵感应能力,但我会尝试提供尽可能多的信息,以便有人可以帮助我调试我认为在我正在尝试编译的某些程序中的链接器错误。
因此,该程序为cilkprof
(请参阅here,警告:tgz文件)。其中只有Makefile
,我只将var CXX = icpc
更改为CXX = g++
。一切都是平等的。
/usr/bin/ld: ../../3rdparty/pintool/intel64/lib/libpin.a(util_host_ia32e.os):
relocation R_X86_64_PC32 against symbol `DoXsave' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
make: *** [linux64/cilkprof.so] Error 1
我知道我应该理解libpin.a
应该用-fPIC
重新编译,但我已经编译了我的pin版本。知道我可能做错了吗?请问是否有问题。感谢。
答案 0 :(得分:1)
在我看来,Makefile正在尝试构建一个共享库并将其链接到静态非PIC库,即AFAIK,这是你不能做的。因此,如果您无法使用-fPIC
重新编译库,那么我看到的唯一解决方案是修改Makefile并构建静态库。