问题1. C代码项目,需要链接另外一个C++静态库,但链接时出现了错误
relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
但在同事的电脑上就能编译通过,发现gcc版本不一样,我的高7.2,他们的才4.x
度娘,搜到的都是说把 那个静态库重新用 ‘-fPIC'重新编译。无奈没源码怎么编。
继续谷歌搜索,终于找到了答案,这其实是高版本的gcc编译时默认带上了 ’-fPIC‘(至于PIC有什么用,去找度娘).
最后找到在C_FLAGS上加上这个参数 -no-pie 就可以了
问题2. 链接时提示找不到各种C++函数的定义,解决方法链接参数中增加 -lstdc++