在CentOS 5.1 g ++ 4.1.2和4.6.3和4.7.0下測試,它們都產生相同的結果。我該如何解決這個問題?基本上我不能用Debug構建構建llvm。gcc -g與-fPIC衝突?
[hidden]$ cat x.cpp
#include <iostream>
int main() {
}
[hidden]$ g++ -c -fPIC -g x.cpp
[hidden]$ objdump -r x.o | grep R_X86_64_32 | head -10
000000000000001c R_X86_64_32 .debug_frame
0000000000000044 R_X86_64_32 .debug_frame
000000000000006c R_X86_64_32 .debug_frame
0000000000000006 R_X86_64_32 .debug_abbrev
000000000000000c R_X86_64_32 .debug_str+0x0000000000000414
0000000000000011 R_X86_64_32 .debug_str+0x00000000000007f2
0000000000000015 R_X86_64_32 .debug_str+0x000000000000017b
0000000000000029 R_X86_64_32 .debug_line
000000000000002e R_X86_64_32 .debug_str+0x0000000000000422
0000000000000034 R_X86_64_32 .debug_str+0x0000000000000607
所以這是不對的:http://sourceware.org/ml/binutils/2006-09/msg00142.html。那麼在構建時找出「重定位R_X86_64_PC32」錯誤的最佳方式是什麼?我在谷歌搜索,但沒有運氣。 – 2012-04-21 00:42:44
我可以重現該錯誤的唯一方法是嘗試將未使用-fPIC編譯的對象鏈接到共享庫中。在鏈接它的帖子的情況下,它可能是一個錯誤,或者這張海報可能剛剛得到的文件困惑 - 也許有兩個yuv2rgb.o副本?這並不罕見。 – 2012-04-21 01:31:19
即該人如何檢查動態重定位是錯誤的。如果只有在使用-g鏈接共享庫時遇到問題,那麼這可能是gcc中的一個錯誤。 – 2012-04-22 01:14:22