针对 lapack 编译 numpy 库时出现链接错误,表明我需要使用 -fPIC 编译 lapack。我以为我已经做到了。有没有办法确定生成的 lapack 库与位置无关?
问问题
10133 次
2 回答
21
您可能对这个答案有一些运气,尽管它依赖于平台并且不适用于所有目标文件(但如果您的代码以任何方式操作指针,它应该可以工作)。
这是使用objdump -r
以下文件编译的文件的结果-fPIC
:
test.o: file format elf32-i386
RELOCATION RECORDS FOR [.text]:
OFFSET TYPE VALUE
00000007 R_386_PC32 __i686.get_pc_thunk.cx
0000000d R_386_GOTPC _GLOBAL_OFFSET_TABLE_
这是针对没有 PIC 的文件:
test.o: file format elf32-i386
于 2011-01-03T15:38:57.997 回答
-4
一般来说,你无法知道:
$ cat a.c
int foo(int x) { return x+1; }
$ gcc -fno-pic a.c -c -o nopic.o
$ gcc -fPIC a.c -c -o pic.o
$ cmp pic.o nopic.o
$ cmp pic.o nopic.o && echo Identical
Identical
于 2011-01-03T15:32:24.597 回答