我在针对lapack编译numpy库时遇到链接错误,表明我需要使用-fPIC编译lapack。我以为我做到了那一点。有没有办法确定生成的lapack库是否与位置无关?
答案 0 :(得分:18)
你可能会对this answer有一些好运,虽然它依赖于平台并且不适用于所有目标文件(但如果你以任何方式编写操作指针,它应该可以工作)。
这是使用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
答案 1 :(得分:-5)
一般来说,你无从知晓:
$ 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