是否有任何方法可以发现静态库是用-fPIC标志编译的?

Is there any method to find out a static library is compiled with -fPIC flag

本文关键字:-fPIC 标志 编译 静态 任何 方法 发现 是否      更新时间:2023-10-16

我手上有一堆静态库,它们都有两个版本——32位和64位。当我使用这些静态库编译成共享库时,奇怪的事情发生了发生了:1. 我使用64位静态库来编译64位共享库,一切正常;2. 我用32位静态库来编译一个32位共享库,ld告诉我[text部分不可共享]。

所以,我猜32位静态库不使用-fPIC标志,但我的同事告诉我他没有添加标志。但我仍然怀疑,所以有一种方法可以找出静态库是否添加了-fPIC标志。PS:我知道使用readelf或objdump可能会得到一些线索,但有没有更好的方法?

我相信,如果您使用的是linux,您可以查看file

的输出
file myLib.so
file myLib.a

输出应该告诉您库是否使用-fPIC

编译