Is there a way to determine that a .a or .so library has been compiled as position indepenent code?

前端 未结 2 1824
终归单人心
终归单人心 2020-12-31 00:44

I am getting a linking error when compiling the numpy library against lapack indicating I need to compile lapack with -fPIC. I thought I had done just that. Is there a way

2条回答
  •  没有蜡笔的小新
    2020-12-31 01:22

    You may have some luck with this answer, although it's platform dependent and doesn't work for all object files (but if you code manipulates pointers in any way, it should work).

    This is the result of objdump -r on a file compiled with -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_
    

    and this is for a file without PIC:

    test.o:     file format elf32-i386
    

提交回复
热议问题