最近的项目需要用到Jsoncpp这一C++开源库,昨天尝试安装了一下。发现linux下C++库的引入与配置要比之前接触的python复杂的多。
其实主要分为以下几个步骤:
- 获取源代码
- 编译源码,生成静态库.a文件和动态库.so文件
- 将.so文件移动到正确的lib/目录下
- 将头文件移动到正确的include/目录下
- 配置静态库链接
一、获取源码
1.先从http://sourceforge.net/projects/jsoncpp/files/latest/download?_test=goal 下载压缩包
2.解压
tar -zxvf jsoncpp-src-0.5.0.tar.gz
二、编译源码
这里需要用到一个自动化构建工具scons,它可以用来编译源码,作用类似GUN cmake
1.下载并解压scons
wget http://prdownloads.sourceforge.NET/scons/scons-2.2.0.tar.gz
tar -zxvf scons-2.2.0.tar.gz
2.进入scons-2.2.0目录,安装之
cd scons-2.2.0
python setup.py install //这里用到了python,因为scons是用python写的
3.进入刚才下载的jsoncpp-src-0.5.0目录 编译jsoncpp源码
cd jsoncpp-src-0.5.0
scons platform=linux-gcc
这是就会发现jsoncpp-src-0.5.0文件夹下多了一个libs文件夹,里面是linux-gcc-7(这里取决于你的linux版本),再里面就是我们所需要的.so和.a文件。
三、移动至正确目录
1.动态库
mv libjson_linux-gcc-4.4.7_libmt.so /usr/lib
ldconfig
这里有一个问题,网上很多教程都直接将.so文件移动到/lib路径下,但是我这么装会报错。
后来想想应该是权限的问题,/lib是内核级、/usr/lib是系统级、/usr/local/lib是用户级。我平常使用的是普通用户而非root,所以无法使用内核级
2.头文件
mv include/json/ /usr/include/
这样就可以直接#include<json/josn.h>了
四、配置静态库链接
这里我使用的是Clion, 在CmakeLists.txt文件中加入一行代码:
target_link_libraries(Json libjson.a)
//Json是项目名称;libjson.a是我对原来的.a文件进行了重命名