当前位置: 首页 > news >正文

CentOS 7 源码安装libjsoncpp-1.9.5库

安装依赖工具

sudo yum install cmake make gcc
  • cmake  需要升级至 3.8.0 以上可参考:CentOS安装CMake
  • gcc  需要升级至9.0 以上可参考:CentOS 7升级gcc版本

下载源码

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

编译并安装

mkdir build && cd build
cmake .. -DBUILD_SHARED_LIBS=ON  # 生成共享库
make
sudo make install

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

配置环境变量

sudo  vim /etc/profile

添加以下内容

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/lib64

 更新环境变量

source /etc/profile

验证安装

编写测试代码test.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;
}

编译并运行

g++ test.cpp -o test -ljsoncpp
./test

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

{
  "age" : 30,
  "name" : "John"
}

常见问题

1. 找不到头文件

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

2. 链接库失败

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

3. 更新动态链接库

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

 

相关文章:

  • vue3 vue-router 传递路由参数
  • Redis数据持久化机制 + Go语言读写Redis各种类型值
  • vue路由缓存问题
  • Linux MariaDB部署
  • Openssl自签证书相关知识
  • 技术改变生活的10种方式
  • 存储服务器是指什么
  • Java 8 代码重构实战之四 Lambda表达式重构工厂模式与责任链模式
  • JVM - 类加载相关
  • 做一个多级动态表单,可以保存数据和回显数据
  • 【论文分析】无人机轨迹规划,Fast-Planner:实时避障+全局最优的路径引导优化算法
  • Rust从入门到精通之进阶篇:12.高级类型系统
  • ubuntu虚拟机的磁盘扩容,虚拟机的克隆
  • 将ZABBIX结合AI实现自动化运维
  • <数据集>轨道异物识别数据集<目标检测>
  • 操作系统高频(四)linux基础
  • nginx-rtmp-module之ngx_rtmp_live_module.c代码详解
  • 前端显示no data(没有数据,一片空白)
  • ComfyUi教程之阿里的万象2.1视频模型
  • OGG故障指南:OGG-00446 Checkpoint table does not exist
  • 泰国男女做那个视频网站/新闻今天的最新新闻
  • 温州网站制作优化/百度seo排名在线点击器
  • 网站规划明细表/百度网盘资源
  • 茂名网站建设建站系统/特大新闻凌晨刚刚发生
  • 贵州做旅游的网站/今日热搜新闻头条
  • 工信部网站备案规定/网络营销的十大特点