GCC问题:relocation R_X86_64_32 against `.rodata‘ can not be used when making a shared object;
问题现象,CentOS7, gcc 4.8.5 编译自己的动态库,调用pjlib库的时候,报错。问题原因下载官方pjlib源码,按照官方得编译步骤编译完成库是静态库,在连接静态库编译为动态库的过程中报错。解决办法需要编译自己的动态库的时候则增加 -fPIC参数。增加之后完美解决。为什么呢-fPIC 作用于编译阶段,告诉编译器产生与位置无关代码(Position-Independent Code),则产生的代码中,没有绝对地址,全部使用相对地址,故而代码可以被加载器加载到内存的任意位置,
原创
2020-11-20 10:25:25 ·
3200 阅读 ·
1 评论