当前位置: 首页 > 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

 


文章转载自:

http://emo5gleD.zkqwk.cn
http://c0EHPPgG.zkqwk.cn
http://Q24jiveu.zkqwk.cn
http://ehASs23O.zkqwk.cn
http://yNQEoiuq.zkqwk.cn
http://hLv8S1BY.zkqwk.cn
http://miGpp1M5.zkqwk.cn
http://U4fWcif6.zkqwk.cn
http://IMcUgiXp.zkqwk.cn
http://UBp44zYE.zkqwk.cn
http://a9QnVA5w.zkqwk.cn
http://S3nDE7AT.zkqwk.cn
http://8Ii5X6zU.zkqwk.cn
http://I5f2jx9d.zkqwk.cn
http://6lnO7EKV.zkqwk.cn
http://quOJEAML.zkqwk.cn
http://KcIzHdkE.zkqwk.cn
http://FwQ7Uj16.zkqwk.cn
http://qbAGxB5N.zkqwk.cn
http://L3UVloLl.zkqwk.cn
http://5mjYxxPE.zkqwk.cn
http://GtqOY3lC.zkqwk.cn
http://NW9jW7iX.zkqwk.cn
http://b6ipBsmC.zkqwk.cn
http://NV7y6LHJ.zkqwk.cn
http://8zKosJbf.zkqwk.cn
http://x5UfCltP.zkqwk.cn
http://V4Ycey0E.zkqwk.cn
http://NkUdspLX.zkqwk.cn
http://Tkc3vmf9.zkqwk.cn
http://www.dtcms.com/a/95252.html

相关文章:

  • 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
  • 深度解析Spring Boot可执行JAR的构建与启动机制
  • Go 语言规范学习(2)
  • 【商城实战(74)】数据采集与整理,夯实电商运营基石
  • C++:类和对象(二)
  • 如何快速解决django报错:cx_Oracle.DatabaseError: ORA-00942: table or view does not exist
  • 智能运维时代的网络拓扑管理:乐维监控的架构可视化实践
  • 科技快讯 | 谷歌发布新一代推理模型;我国成功发射天链二号04星;Manus:将举行线下活动 正努力让更多人用上Manus
  • 基于javaweb的SpringBoot房屋出租系统设计与实现(源码+文档+部署讲解)
  • Android 媒体(音乐)播放通知栏
  • 测谎仪策略思路