首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >找不到-lboost_filesystem和-lboost_system

找不到-lboost_filesystem和-lboost_system
EN

Stack Overflow用户
提问于 2021-08-07 05:02:20
回答 2查看 716关注 0票数 0

我在我的示例程序中使用了boost::filesystem,但是得到了链接错误。

下面是示例程序:

代码语言:javascript
运行
复制
#include<boost/filesystem.hpp>
using namespace std;

int main()
{
    string fromPath = "/home/anurag/testfile";
    string toPath = "/home/anurag/testfile";

    boost::filesystem::copy_file(fromPath,toPath);
    return 0;
}

以下是试图解决此问题的步骤:

1. g++ -g test.cpp -o out -I/apps/rcast/anurag/vendor/RH6.1AS_64/x86_64/boost_1_64_0/ Note:存在于boostlib目录中,filesystem.hpp位于boost/中。

这里有链接错误,因为我错过了包含lboost_systemlboost_filesystem的内容

2.指定了-L选项,并在构建期间指定了库:

g++ -g test.cpp -o out -I/apps/rcast/anurag/vendor/RH6.1AS_64/x86_64/boost_1_64_0/ -L/apps/rcast/anurag/vendor/RH6.1AS_64/x86_64/boost_1_64_0/lib/ -lboost_system -lboost_filesystem

错误:

代码语言:javascript
运行
复制
/usr/bin/ld: cannot find -lboost_filesystem
/usr/bin/ld: cannot find -lboost_system
collect2: error: ld returned 1 exit status

3.在LD_LIBRARY_PATH中添加了库路径,尽管不是选项中指定的,但现在echo $LD_LIBRARY_PATH显示/xenv/gcc_gnu/X/6.1.0/lib64:/apps/rcast/anurag/vecndor/RH6.1AS_64/x86_64/boost_1_64_0/lib

还是同样的错误。

boost_1_64_0/lib/库中有ls -lart libboost*system*

代码语言:javascript
运行
复制
libboost_filesystem-gcc61-mt-sd-1_64.a
libboost_system-gcc61-mt-sd-1_64.a
libboost_filesystem-gcc61-mt-s-1_64.a
libboost_system-gcc61-mt-s-1_64.a
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-07 06:20:13

-lboost_filesystem使链接器查找名为libboost_filesystem.alibboost_filesystem.so的文件,因为您的文件名为libboost_filesystem-gcc61-mt-s-1_64.a,需要将-lboost_filesystem-gcc61-mt-s-1_64传递给链接器。

票数 1
EN

Stack Overflow用户

发布于 2021-08-07 07:52:28

为boost库找到正确的链接器选项可能会很痛苦。我建议让cmake来整理这些细节。使用这个CMakeLists.txt文件,您的代码可以编译:

代码语言:javascript
运行
复制
cmake_minimum_required(VERSION 3.5)
project (copyfile LANGUAGES CXX)
find_package(Boost REQUIRED COMPONENTS filesystem)
add_executable(${PROJECT_NAME} test)
target_link_libraries(${PROJECT_NAME} Boost::filesystem)

cmake-assisted编译可以按照通常的步骤进行:

code

  • mkdir build && cd build

  • cmake ..

  • CMakeLists.txt文件添加到包含源和
  1. 的目录中

注意,您的代码中有一个错误/错误:复制指令应该是

代码语言:javascript
运行
复制
boost::filesystem::copy_file(fromPath,toPath);
       ^^^^^^^^^^
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68689546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档