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
相关推荐
ha204289419434 分钟前
Linux操作系统学习记录之----自定义协议(网络计算器)
linux·网络·学习
想唱rap39 分钟前
MYSQL在ubuntu下的安装
linux·数据库·mysql·ubuntu
java_logo41 分钟前
QWEN3 企业级 Docker 容器化部署指南
运维·docker·容器·qwen3部署·qwen3部署文档·qwen3部署教程·qwen3部署方案
糖~醋排骨42 分钟前
DHCP服务的搭建
linux·服务器·网络
huohaiyu1 小时前
网络中的一些基本概念
运维·服务器·网络
Kiyra1 小时前
虚拟机假死?SSH 能连却卡 Logo 界面
运维·ssh
dust_and_stars1 小时前
ubuntu24使用apt安装VS-code-server code-server
linux·服务器·windows
码农小韩1 小时前
基于Linux的C++学习——循环
linux·c语言·开发语言·c++·算法
tap.AI2 小时前
Deepseek(九)多语言客服自动化:跨境电商中的多币种、多语种投诉实时处理
运维·人工智能·自动化
ling-452 小时前
Linux-day09 11
linux·运维·服务器