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
相关推荐
小Tomkk24 分钟前
数据库 变更和版本控制管理工具 --Bytebase 安装部署(linux 安装篇)
linux·运维·数据库·ci/cd·bytebase
赌博羊25 分钟前
ImportError: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32‘ not found
linux·运维·gnu
木卫二号Coding27 分钟前
第七十九篇-E5-2680V4+V100-32G+llama-cpp编译运行+Qwen3-Next-80B
linux·llama
getapi35 分钟前
Ubuntu 22.04 服务器的系统架构是否为 amd64 x86_64
linux·服务器·ubuntu
消失的旧时光-19431 小时前
Linux 入门核心命令清单(工程版)
linux·运维·服务器
艾莉丝努力练剑1 小时前
【Linux:文件】Ext系列文件系统(初阶)
大数据·linux·运维·服务器·c++·人工智能·算法
小天源1 小时前
Cacti在Debian/Ubuntu中安装及其使用
运维·ubuntu·debian·cacti
Trouvaille ~1 小时前
【Linux】TCP Socket编程实战(一):API详解与单连接Echo Server
linux·运维·服务器·网络·c++·tcp/ip·socket
芷栀夏2 小时前
深度解析 CANN 异构计算架构:基于 ACL API 的算子调用实战
运维·人工智能·开源·cann
全栈工程师修炼指南2 小时前
Nginx | stream 四层反向代理:SSL、PREREAD 阶段模块指令浅析与实践
运维·网络·网络协议·nginx·ssl