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
相关推荐
莫回首�3 小时前
ubuntu 20.04 多网卡配置,遇到问题总结
linux·网络·ubuntu
网络安全许木3 小时前
自学渗透测试第11天(Linux压缩解压与磁盘管理)
linux·网络安全·渗透测试
航Hang*6 小时前
Windows Server 配置与管理——第3章:文件系统管理
运维·服务器·windows·vmware
lifewange6 小时前
Linux ps 进程查看命令详解
linux·运维·服务器
功德+n6 小时前
Linux下安装与配置Docker完整详细步骤
linux·运维·服务器·开发语言·docker·centos
左手厨刀右手茼蒿7 小时前
Linux 内核中的块设备驱动:从原理到实践
linux·嵌入式·系统内核
杨云龙UP7 小时前
从0到1快速学会Linux操作系统(基础),这一篇就够了!
linux·运维·服务器·学习·ubuntu·centos·ssh
HXQ_晴天7 小时前
Ubuntu 设置中文输入法
linux·运维·ubuntu
Dovis(誓平步青云)7 小时前
《Linux 信号入门:搞懂 “进程通信的紧急电话” 到底怎么用(初篇)》
linux·运维·服务器