项目场景:
问题描述
制作、使用动态库时,执行这条命令时报错
gcc -shared -o libsub.so sub.o
解决方案:
这个错误表明在创建一个共享对象(libsub.so)时,与.rodata部分相关的R_X86_64_32重定位类型存在问题。错误建议使用-fPIC(位置无关代码)选项重新编译对象文件sub.o。
为了解决这个问题,你应该使用-fPIC标志编译源代码(sub.c或类似文件)。以下是修改编译命令的方法:
gcc -c -o sub.o sub.c -fPIC
gcc -shared -o libsub.so sub.o
这确保对象文件sub.o以位置无关代码的方式进行编译,这是共享库所需的。在使用-fPIC重新编译后,你可以链接对象文件以创建共享库,而不会遇到重定位错误。