【发布时间】:2013-06-12 09:21:30
【问题描述】:
我需要让 yaml-cpp 运行,但它无法编译而不会出现错误。我正在使用来自here 的 Ubuntu 12.04 和 yaml-cpp-0.5.1,它们是使用“cmake”和“sudo make install”安装的,以确保将库正确复制到所需的路径“/usr/local/”包含/yaml-cpp'。
出于测试目的,我尝试编译了几行代码
#include "yaml-cpp/yaml.h"
int main(int argc, char **argv) {
YAML::Node config = YAML::Load("[1,2,3]");
return 0;
}
我基本上是从这个页面here得到的。如果我现在运行
g++ -o yaml_test yaml_test.cpp
或
g++ -I/usr/local/include -L/usr/local/lib -lyaml-cpp -o yaml_test yaml_test.cpp
我总是收到相同的错误消息
/tmp/ccgvKdN2.o: In function `main':
yaml_test.cpp:(.text+0x1d): undefined reference to `YAML::Load(char const*)'
据我所知,这意味着尚未找到库。
这里发生了什么?为什么不直接编译?
【问题讨论】:
-
你能确认
libyaml-cpp.a在/usr/local/lib中吗? -
是的,事实就是这样。
-
您可以尝试将
libyaml-cpp.a复制到与yaml_test.cpp相同的目录并重新编译吗? -
还有一件事:你能检查你的包是否安装了不同版本的 yaml-cpp 吗?例如,查看
/usr/lib,并在/usr/local/lib中查看libyaml-cpp.*,看看是否已经存在旧的动态库。 -
好的,我复制了这个文件,但它并没有改变错误信息。我在
/usr/lib和/usr/local/lib中找到了文件libyaml-cpp.so、libyaml-cpp.so.0.2和libyaml-cpp.so.0.2.7和libyaml-cpp.a。我猜这意味着包管理器安装了 0.2.7 版本,而我手动安装了 0.5.1,这可能会导致某种混乱。我已经尝试过sudo aptitude remove yaml-cpp,这是一个非常糟糕的主意,因为它还删除了我仍在使用的许多其他东西。所以我不得不重新安装所有东西。还有其他方法可以删除这个包吗?
标签: yaml-cpp