numpy ライブラリを lapack に対してコンパイルすると、-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 に答える