jsoncpp relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; ……

使用jsoncpp 静态库出错解决过程##

用C++在CLion 中使用 jsoncpp静态库 做解析一个json格式时 出现以下错误:

relocation R_X86_64_32 against `.rodata' can not be used when making a shared object;  ……

错误显示没写完,最后让加 -fPIC 编译选项。
解决方法是编译jsoncpp 加上 -fPIC 选项:
放弃scons编译(当然,scons也应该有解决方法,但我不熟悉),采用cmake编译:
1.新建编译目录

mkdir build
cd build

2.cmake

cmake -DCMAKE_CXX_FLAGS="-fPIC -Dnullptr=NULL"

3.make & make install

make -j4
sudo make install

屏幕上会打印出安装目录,我的是

-- Install configuration: "Release"
-- Installing: /usr/local/lib/pkgconfig/jsoncpp.pc
-- Installing: /usr/local/lib/libjsoncpp.a
-- Installing: /usr/local/include/json/reader.h
-- Installing: /usr/local/include/json/version.h
-- Installing: /usr/local/include/json/features.h
-- Installing: /usr/local/include/json/autolink.h
-- Installing: /usr/local/include/json/forwards.h
-- Installing: /usr/local/include/json/json.h
-- Installing: /usr/local/include/json/config.h
-- Installing: /usr/local/include/json/allocator.h
-- Installing: /usr/local/include/json/value.h
-- Installing: /usr/local/include/json/assertions.h
-- Installing: /usr/local/include/json/writer.h

想加入项目使用而不是作为系统库的话,去相应目录拷贝头文件和静态库就是了。

posted @ 2017-01-09 19:12  微微苏荷  阅读(1806)  评论(0编辑  收藏  举报