22

numpy ライブラリを lapack に対してコンパイルすると、-fPIC を使用して lapack をコンパイルする必要があることを示すリンク エラーが発生します。私はまさにそれをしたと思いました。生成された lapack ライブラリが位置に依存しないことを確認する方法はありますか?

4

2 に答える 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 に答える