0

我知道这里没有多少人拥有心灵感应能力,但我会尽力提供尽可能多的信息,以便有人可以帮助我调试我认为是我正在尝试编译的某些程序中的链接器错误。

所以,程序是cilkprof(见这里,警告:tgz 文件)。在其中是 aMakefile我只将 var 更改CXX = icpcCXX = 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 版本已经编译。知道我可能做错了什么吗?请询问是否有不清楚的地方。谢谢。

4

1 回答 1

1

在我看来,Makefile 正在尝试构建一个共享库并将其链接到一个静态非 PIC 库,即 AFAIK,这是您无法做到的。因此,如果您无法重新编译库,-fPIC那么我看到的唯一解决方案是修改 Makefile 并构建一个静态库。

于 2012-11-17T16:10:20.803 回答