CentOS 7 源码安装libjsoncpp-1.9.5库

安装依赖工具

bash 复制代码
sudo yum install cmake make gcc

下载源码

bash 复制代码
wget https://github.com/open-source-parsers/jsoncpp/archive/refs/tags/1.9.5.tar.gz
bash 复制代码
tar -xzf 1.9.5.tar.gz
bash 复制代码
cd jsoncpp-1.9.5

编译并安装

bash 复制代码
mkdir build && cd build
cmake .. -DBUILD_SHARED_LIBS=ON  # 生成共享库
make
sudo make install

注意,在cmake ..后面加上了-DBUILD_SHARED_LIBS=ON选项,会生成静态库和共享库。若不添加,则只会生成静态库。

配置环境变量

bash 复制代码
sudo  vim /etc/profile

添加以下内容

cpp 复制代码
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/lib64

更新环境变量

cpp 复制代码
source /etc/profile

验证安装

编写测试代码test.cpp):

cpp 复制代码
#include <iostream>
#include <json/json.h>

int main() {
    Json::Value root;
    root["name"] = "John";
    root["age"] = 30;
    std::cout << root.toStyledString() << std::endl;
    return 0;
}

编译并运行

bash 复制代码
g++ test.cpp -o test -ljsoncpp
./test

输出应为格式化的JSON字符串:

bash 复制代码
{
  "age" : 30,
  "name" : "John"
}

常见问题

1. 找不到头文件

  • 确认安装路径,若从源码安装,使用-I /usr/local/include指定头文件路径。

2. 链接库失败

  • 添加-L /usr/local/lib指定库路径,并确保LD_LIBRARY_PATH包含该路径。

3. 更新动态链接库

bash 复制代码
sudo ldconfig

4. 编译报错

复制代码
[ 82%] Building CXX object src/test_lib_json/CMakeFiles/jsoncpp_test.dir/jsontest.cpp.o
In file included from /home/summergao/jsoncpp-1.9.5/src/test_lib_json/jsontest.cpp:7:0:
/home/summergao/jsoncpp-1.9.5/src/test_lib_json/jsontest.h: In member function 'JsonTest::TestResult& JsonTest::TestResult::operator<<(const T&)':
/home/summergao/jsoncpp-1.9.5/src/test_lib_json/jsontest.h:87:37: error: 'hexfloat' is not a member of 'std'
     oss << std::setprecision(16) << std::hexfloat << value;
                                     ^
make[2]: *** [src/test_lib_json/CMakeFiles/jsoncpp_test.dir/build.make:76: src/test_lib_json/CMakeFiles/jsoncpp_test.dir/jsontest.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:1031: src/test_lib_json/CMakeFiles/jsoncpp_test.dir/all] Error 2
make: *** [Makefile:146: all] Error 2

问题原因

GCC版本太低导致

解决办法

切换GCC版本

复制代码
scl enable devtoolset-9 bash

重新构建编译

复制代码
cd build && rm -rf * 

cmake .. -DBUILD_SHARED_LIBS=ON
复制代码
make
相关推荐
small_wh1te_coder7 分钟前
硬件嵌入式学习路线大总结(一):C语言与linux。内功心法——从入门到精通,彻底打通你的任督二脉!
linux·c语言·汇编·嵌入式硬件·算法·c
小张是铁粉14 分钟前
docker在Linux的安装遇到的问题
linux·docker·容器
weixin_77143231117 分钟前
linux系统 weblogic10.3.6(jar) 下载及安装
linux·运维·jar
绝不偷吃26 分钟前
FastDFS分布式储存
linux·nginx
scuter_yu29 分钟前
主流零信任安全产品深度介绍
运维·网络·安全
开开心心就好1 小时前
免费PDF处理软件,支持多种操作
运维·服务器·前端·spring boot·智能手机·pdf·电脑
m0_653031362 小时前
腾讯云认证考试报名 - TDSQL数据库交付运维专家(TCCE PostgreSQL版)
运维·数据库·腾讯云
IC 见路不走2 小时前
LeetCode 第91题:解码方法
linux·运维·服务器
没有名字的小羊2 小时前
8.Docker镜像讲解
运维·docker·容器·tomcat
翻滚吧键盘2 小时前
查看linux中steam游戏的兼容性
linux·运维·游戏