假设您正在生成一个共享库,最有可能发生的事情是
liblog4cplus.a您使用的变体未使用进行编译
-fPIC。在linux中,您可以通过从静态库中提取目标文件并检查其重定位来确认这一点:
ar -x liblog4cplus.a readelf --relocs fileappender.o | egrep '(GOT|PLT|JU?MP_SLOT)'
如果输出为空,则静态库与位置无关,并且不能用于生成共享库。
由于静态库包含已编译的目标代码,因此提供-fPIC标志将无济于事。
您需要使用
liblog4cplus.a编译的版本,
-fPIC并改用该版本。



