Centos7下新版本Jsoncpp编译安装
上一篇文章中,搭建好了虚拟机centos服务器,并且通过ssh连接,这里我们编译使用一下Jsoncpp这个广泛使用的json开源库。
编译
Jsoncpp直接下载源码编译,网址https://github.com/open-source-parsers/jsoncpp/
新建一个项目文件夹jsoncpp,然后git clone https://github.com/open-source-parsers/jsoncpp/
如果下载超时,试试git clone git://github.com/open-source-parsers/jsoncpp/
下载完以后,在项目目录同级新建一个文件夹build,用来编译工程,目录结构如下
jsoncpp
—jsoncpp(项目目录)
—build
然后cd到build目录下,执行,
cmake ../jsoncpp
会在build目录下生成编译文件,然后直接make即可,
make
这里需要注意,较新版本的jsoncpp需要C++11支持,所以gcc的版本需要比较新,否则会报一些错误。如果本地装了多个gcc的版本,可以手动指定一下项目目录下CMakeLists.txt文件中的编译器,
# ---------------------------------------------------------------------------
# use ccache if found, has to be done before project()
# ---------------------------------------------------------------------------
#find_program(CCACHE_EXECUTABLE "ccache" HINTS /usr/local/bin /opt/local/bin)
#if(CCACHE_EXECUTABLE)
#message(STATUS "use ccache")
#set(CMAKE_CXX_COMPILER_LAUNCHER "${CCACHE_EXECUTABLE}" CACHE PATH "ccache" FORCE)
#set(CMAKE_C_COMPILER_LAUNCHER "${CCACHE_EXECUTABLE}" CACHE PATH "ccache" FORCE)
#endif()
SET(CMAKE_C_COMPILER "/usr/bin/gcc")
SET(CMAKE_CXX_COMPILER "/usr/bin/g++")
把上面的注释掉,然后set指定一下编译器路径。
编译完成后会在编译目录build下的lib中生成.a和.so库
使用Jsoncpp
编译生成了静态和动态库,就可以直接使用了,这里测试下,新建一个cpp文件,包含一下头文件。Jsoncpp的头文件在clone下来的目录中jsoncpp\include\json,
#include<iostream>
#include<string>
#include<vector>
#include "json/json.h"
using namespace std;
int main()
{
Json::Value cfg = Json::nullValue;
cfg["name"] = "pengzheng";
cfg["age"] = "24";
cout<<cfg.toStyledString().c_str();
}
写一个简单的makefile测试下,
OBJ = main
OBJ_SOURCE = main.cpp
CC = g++
RM = rm -f
LIBS = /home/pengzheng/program/test/libjsoncpp.a
$(OBJ):$(OBJ_SOURCE)
$(CC) -o $@ $(OBJ_SOURCE) $(LIBS)
clean:
$(RM) *.o $(OBJ)
然后,make一下,生成main文件,执行一下./main
ok了。