jsoncpp的安装与配置

网上有和很多的文章介绍jsoncpp的安装,本人走了不少歧路,在此分享一下自己的安装步骤。

安装jsoncpp前必须安装scons。

1.scons下载地址:

http://sourceforge.net/projects/scons/files/scons/2.1.0/scons-2.1.0.tar.gz/download


2.jsoncpp下载地址:

http://sourceforge.net/projects/jsoncpp/files/


3.解压scons-2.1.0.tar.gz

tar -zvxf scons-2.1.0.tar.gz

我解压到了/opt/JSON 目录下,在/opt/JSON下,执行命令:tar -zvxf scons-2.1.0.tar.gz,会将解压的文件放在scons-2.1.0下。


4. 安装scons

进入到解压目录scons-2.1.0下面,执行命令:

sudo python setup.py install


5. 解压jsconcpp

tar -zvxf jsoncpp-src-0.5.0.tar.gz

我解压到了/opt/JSON下,在/opt/JSON 下,执行命令:tar -zvxf jsoncpp-src-0.5.0.tar.gz,会将解压的问价凡在jsoncpp-src-0.5.0 下。


6. 安装jsoncpp

解压后,进入jsoncpp-src-0.5.0,执行下列命令,安装所依赖的静态库和动态库。

sudo scons platform=linux-gcc

执行该命令后,会在jsoncpp-src-0.5.0下出现一个libs目录。


7. 将/jsoncpp-src-0.5.0/include/目录下的json文件夹拷贝到/usr/include/

  • 在root根目录 / 下,进入目录 :

    cd /opt/JSON/jsoncpp-src-0.5.0/include

    进行拷贝:

    cp -r ./json /usr/include/

  • 或者不进入相关目录,直接进行拷贝

    cp -r /opt/JSON/jsoncpp-src-0.5.0/include/json /usr/include/


8. 将jsoncpp-src-0.5.0/libs/linux-gcc-4.8.5/目录下的libjson_linux-gcc-4.8.5_libmt.a 和libjson_linux-gcc-4.8.5_libmt.so拷贝到/usr/local/lib/下,并为了方便使用,将其重命名为libjson.a 和 libjson.so

在root根目录下:

进入目录linux-gcc-4.8.5:

cd /opt/JSON/jsoncpp-src-0.5.0/libs/linux-gcc-4.8.5

拷贝:

cp libjson_linux-gcc-4.8.5_libmt.a /usr/local/lib

cp libjson_linux-gcc-4.8.5_libmt.so /usr/local/lib

进入/usr/local/lib 目录,重命名链接库:

cd /usr/local/lib

mv libjson_linux-gcc-4.8.5_libmt.a libjson.a

mv libjson_linux-gcc-4.8.5_libmt.so libjson.so


9. 配置链接路径

直接运行jsoncpp文件,-ljson,系统会找不到xxx.so动态链接库。

在根目录下:

vim etc/ld.so.conf

在 etc/ld.so.conf 下加入 /usr/local/lib 这一行,保存。

运行:/sbin/ldconfig -v  更新一下配置。

10. 完成上述步骤后,即可完成安装,可以正常编译jsoncpp文件。


jsoncpp测试文件:

#include
#include

using namespace std;

int main()
{
    string test="{\"id\":16,\"name\":\"_Qiana\"}";
    Json::Reader  reader;
    Json::Value   value;

    if(reader.parse(test,value))
    {
        if(!value["id"].isNull())
        {
            cout<

运行:g++ test_jsoncpp.cc -o test_json -ljson






你可能感兴趣的:(Linux)