linux中yaml安装包如何安装,yaml-cpp的安装

本文详细介绍了在Linux环境下如何安装C++的YAML解析库yaml-cpp,包括CMake的安装、yaml-cpp的下载与编译,以及解决运行时依赖问题,最后展示了简单的YAML解析代码测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++下有这一个Yaml的解析包,PHP也有一个Yaml的解析包,这样两者就能进行对文件的解析是一个规则,达到统一的目的,双方就可以通讯,这样语言之间对配置的解析一样,上层通过Socket来通信统一,进而实现大系统的搭建。

首先要有CMake环境,需要编译一个CMake出来,然后才是在下载下来的文件目录下运行这个Cmake:

tar -zxvf cmake-2.8.4.tar.gz

首先,需要下载安装Cmake;

wget http://www.cmake.org/files/v2.8/cmake-2.8.4.tar.gz

安装cmake;

tar xvzf cmake-2.8.4.tar.gz

./configure

make

make install

其次,下载YAML的C++解析器 yaml-cpp ,URL为:http://www.oschina.NET/p/yaml-cpp                                                                                      https://github.com/jbeder/yaml-cpp/releases/

编译:

cmake  -DBUILD_SHARED_LIBS=ON

root@116.255.139.240:/home/admin/c++/yaml_4_C/yaml-cpp# cmake  -DBUILD_SHARED_LIBS=ON

-- The C compiler identification is GNU

-- The CXX compiler identification is GNU

-- Check for working C compiler: /usr/bin/gcc

-- Check for working C compiler: /usr/bin/gcc -- works

-- Detecting C compiler ABI info

-- Detecting C compiler ABI info - done

-- Check for working CXX compiler: /usr/bin/c++

-- Check for working CXX compiler: /usr/bin/c++ -- works

-- Detecting CXX compiler ABI info

-- Detecting CXX compiler ABI info - done

-- Performing Test FLAG_WEXTRA

-- Performing Test FLAG_WEXTRA - Success

-- Configuring done

-- Generating done

-- Build files have been written to: /home/admin/c++/yaml_4_C/yaml-cpp

root@116.255.139.240:/home/admin/c++/yaml_4_C/yaml-cpp# make

Scanning dependencies of target yaml-cpp

[  3%] Building CXX object CMakeFiles/yaml-cpp.dir/src/emitter.cpp.o

[  6%] Building CXX object CMakeFiles/yaml-cpp.dir/src/emitterstate.cpp.o

[  9%] Building CXX object CMakeFiles/yaml-cpp.dir/src/simplekey.cpp.o

[ 12%] Building CXX object CMakeFiles/yaml-cpp.dir/src/parser.cpp.o

......

[ 96%] Building CXX object test/CMakeFiles/run-tests.dir/spectests.cpp.o

Linking CXX executable run-tests

[ 96%] Built target run-tests

Scanning dependencies of target parse

[100%] Building CXX object util/CMakeFiles/parse.dir/parse.cpp.o

Linking CXX executable parse

[100%] Built target parse

然后呢: make ,后生成:

/home/admin/c++/yaml_4_C/yaml-cpp/test3

libyaml-cpp.so.0.2.6

libyaml-cpp.so.0.2 -> libyaml-cpp.so.0.2.6

libyaml-cpp.so -> libyaml-cpp.so.0.2

查看H文件位置:

root@116.255.139.240:/home/admin/c++/yaml_4_C/yaml-cpp# find . -name "yaml.h"

./include/yaml-cpp/yaml.h

最后,进行Yaml的代码解析测试:

1)建立目录:

mkdir test3

目录位置:root@116.255.139.240:/home/admin/c++/yaml_4_C/yaml-cpp/test3

2)写入C++测试代码

1.vi test.cpp

加入:

#include

#include "yaml.h"

int main()

{

std::ifstream fin("component.yaml");

YAML::Parser parser(fin);

YAML::Node doc;

while(parser.GetNextDocument(doc))

{

}

}

3).把yaml.h拷贝到test3的目录下来:

root@116.255.139.240:/home/admin/c++/yaml_4_C/yaml-cpp/test3# cp ../include/yaml-cpp/yaml.h

4)后进行编译编译:

g++ -o test test.cpp -I../include/ ../libyaml-cpp.so

5)运行测试

root@116.255.139.240:/home/admin/c++/yaml_4_C/yaml-cpp/test3# ./test

./test: error while loading shared libraries: libyaml-cpp.so.0.2: cannot open shared object file: No such file or directory

6)解决问题:

/home/admin/c++/yaml_4_C/yaml-cpp/test3

libyaml-cpp.so.0.2.6

libyaml-cpp.so.0.2 -> libyaml-cpp.so.0.2.6

libyaml-cpp.so -> libyaml-cpp.so.0.2

root@116.255.139.240:/home/admin/c++/yaml_4_C/yaml-cpp# cp libyaml-cpp.so  /usr/lib/

root@116.255.139.240:/usr/lib# ln -s libyaml-cpp.so libyaml-cpp.so.0.2

7)再次执行,得到解决:

再执行就不报错了,原来是没有把这个so给放到/usr/lib下,再就是没有给重新软链接一个,Ok了。

root@116.255.139.240:/home/admin/c++/yaml_4_C/yaml-cpp/test3# ./test

root@116.255.139.240:/home/admin/c++/yaml_4_C/yaml-cpp/test3#

8)自由发挥,放到实际的开发中去。

Yaml实际解析测试:

#include

#include "yaml.h"

#include

#include

using namespace std;

int main()

{

std::ifstream fin("component.yaml");

YAML::Parser parser(fin);

YAML::Node doc;

while(parser.GetNextDocument(doc))

{

std::string output;

doc["site"] >> output;

cout << output <

}

}

component.yaml这个Yaml文件的内容:

site: jackxiang.com

编译:

g++ -g -o test test.cpp -I../include/ ../libyaml-cpp.so

测试Yaml解析是否成功:

root@116.255.139.240:/home/admin/c++/yaml_4_C/yaml-cpp/test3# ./test

jackxiang.com

解析成功!

最后,当然还有纯C语言的,来解析 YAML 1.1 数据,其编译估计差不多,下载URl:

http://www.oschina.net/p/libyaml

建议用eclipse来开发C++,还有PHP,因为eclipse 有PHP的插件,也有C++的插件,我是用的Zend for eclipse,现在eclipse还有一个Yaml的编辑插件,相关介绍情况如下:

安装YEdit

YEdit是一个在Eclipse上编辑YAML文件的插件。当我们我们使用Python进行App Engine的开发,会涉及编辑一些YAML文件,这个插件提供了较好的支持。

这个还是通过Eclipse的更新管理器来完成安装,在对话框中的在Work with中输入http://dadacoalition.org/yedit,然后勾选该插件,然后不断下一步,稍等片刻,安装成功。

### Windows环境下yaml-cpp安装与使用 #### 一、准备工作 在Windows环境中安装和使用`yaml-cpp`库,需要先完成开发环境的搭建以及依赖工具的准备。以下是具体的操作流程。 1. **下载yaml-cpp源码** 访问官方GitHub仓库地址,获取最新版本的`yaml-cpp`源代码[^1]。 2. **安装CMake** `yaml-cpp`的构建过程依赖于CMake工具。可以从[CMake官网](https://cmake.org/download/)下载适合Windows系统的安装包并完成安装[^2]。 3. **配置编译器** 推荐使用Microsoft Visual Studio作为主要IDE。根据个人需求选择合适的版本(如Visual Studio 2019或更高版本)。确保已启用C++支持功能。 #### 二、编译yaml-cpp库 按照以下步骤执行: 1. 解压下载好的`yaml-cpp`源代码到指定目录; 2. 打开命令提示符或者PowerShell窗口,在解压后的根路径创建一个新的子文件夹用于存放生成物,比如命名为`build`; 3. 进入该新建的`build`文件夹; 4. 调用CMake进行项目初始化配置工作: ```bash cmake .. ``` 5. 如果一切正常,则继续利用MSBuild来实际生产目标产物: ```bash msbuild yaml_cpp.sln /p:Configuration=Release ``` 上述操作完成后即可获得预设架构下的动态链接库(.dll)及静态库(.lib)。 #### 三、集成至应用程序 为了能够在自己的程序里调用`yaml-cpp`的功能模块,需做如下几件事情: - 将头文件所在位置告知工程设置中的附加包含目录项; - 把之前生成出来的`.lib`加入到链接阶段所使用的库列表当中去; - 当采用DLL形式部署时还需保证运行时刻能找到对应的共享对象文件。 下面给出一段简单的例子展示怎样加载YAML文档内容并通过结构化方式访问其中的数据成员。 ```cpp #include <iostream> #include <fstream> #include "yaml-cpp/yaml.h" int main() { try { YAML::Node config = YAML::LoadFile("example.yaml"); std::string name = config["name"].as<std::string>(); int age = config["age"].as<int>(); std::cout << "Name: " << name << "\n"; std::cout << "Age: " << age << "\n"; } catch (const YAML::Exception& e) { std::cerr << "Error parsing YAML file: " << e.what() << '\n'; } return 0; } ``` 此段示范代码尝试打开名为`example.yaml`的外部资源档案,并从中提取两个字段——姓名(`name`)与年龄(`age`)加以打印输出[^3]。 #### 四、注意事项 - 确认所有的环境变量均已正确定义好以便顺利定位所需的第三方组件及其制品; - 对应不同平台可能存在的差异性处理逻辑也要有所考虑,例如路径分隔符等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值