gcc position fpic

gcc - ¿Hay una manera de determinar que una biblioteca.a o.so ha sido compilada como código de posición independiente?



position fpic (2)

En general, no tienes forma de saber:

$ 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

Recibo un error de enlace al compilar la biblioteca numpy contra lapack que indica que necesito compilar lapack con -fPIC. Pensé que había hecho justo eso. ¿Hay una manera de determinar que la biblioteca lapack producida es independiente de la posición?


Puede tener algo de suerte con esta respuesta , aunque depende de la plataforma y no funciona para todos los archivos de objetos (pero si el código manipula los punteros de alguna manera, debería funcionar).

Este es el resultado de objdump -r en un archivo compilado con -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_

y esto es para un archivo sin PIC:

test.o: file format elf32-i386