链接/编译使用 boost/filesystem.hpp 的程序
Linking/compiling a program that uses boost/filesystem.hpp
我正在尝试在我正在编写的某些代码中使用boost/文件系统库。我似乎很难编译它。我正在运行 Debian Wheezy,并且有 boost 版本 1.49(如果您使用 apt-get 安装,就会出现这种情况)。我正在尝试编译文档提供的示例
#include <iostream>
#include <boost/filesystem.hpp>
using namespace boost::filesystem;
int main(int argc, char* argv[])
{
if (argc < 2)
{
std::cout << "Usage: tut1 pathn";
return 1;
}
std::cout << argv[1] << " " << file_size(argv[1]) << 'n';
return 0;
}
我使用以下命令:
g++ temp.cc -o temp /usr/lib/libboost_filesystem.a
我收到许多错误,例如:
/usr/lib/libboost_filesystem.a(operations.o): In function `boost::filesystem3::detail::dir_itr_close(void*&, void*&)':
(.text+0x4d): undefined reference to `boost::system::system_category()'
/usr/lib/libboost_filesystem.a(operations.o): In function `boost::filesystem3::detail::directory_iterator_increment(boost::filesystem3::directory_iterator&, boost::system::error_code*)':
(.text+0xe3): undefined reference to `boost::system::system_category()'
这可能是一些链接错误,对吧?关于我如何解决它的任何想法?
更新#1:我尝试使用 -lboost_filesyste 和 -L/usr/lib 运行它。它给了我以下错误:
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
您没有正确链接库。此外,正如其他人提到的,boost_filesystem
也需要boost_system
图书馆。用:
g++ temp.cc -o temp -lboost_system -lboost_filesystem
命令行参数-l foo
链接libfoo.a
库。如果静态库不在默认库位置,请使用命令 -L /custom/library/dir
。但我相信/usr/lib
是海湾合作委员会自动考虑的。
编辑
根据您在下面的评论,看起来您没有使用main()
函数编译文件,或者您的名字main()
拼写错误。确保temp.cc
包含以下一个且仅包含一个函数:
int main();
int main(int argc, char** argv);
当然,您确实记得大写/小写很重要。 :)
Boost.Filesystem 使用 Boost.System 中的东西。你也必须与之联系。
您看到的错误消息:
/usr/lib/libboost_filesystem.a(operations.o): In function
`boost::filesystem3::detail::dir_itr_close(void*&, void*&)':
(.text+0x4d): undefined reference to `boost::system::system_category()'
这是对Boost.System的引用
添加-lboost_system
,你应该很高兴(或者,至少更好)。
使用 -lboost_filesystem
编译
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- C++,系统无法执行指定的程序
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 重载操作程序时出错>>用于类中的字符串 memebr
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 试图在visual studio上用C++创建一个桌面应用程序
- 模板元程序查找相似的连续类型名称
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 如何通过cpp程序运行shell脚本
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 如何修复"无法打开包含文件'boost/config.hpp':没有这样的文件或目录(包括目录涵盖:C:\程序文件\boost\boost_1_67_0)
- 根据您的.h或.hpp文件中的代码,有人可以了解您的应用程序
- 如何使用g++获取C++头文件(.hpp)的程序集代码
- 链接/编译使用 boost/filesystem.hpp 的程序
- 编译一个基本的openCL程序错误:cl.hpp中未解析的includes
- 如何在Linux上使用boost/shared_ptr.hpp编译c++程序
- 使用CMake编译使用Boost/python.hpp的c++程序