gpt4 book ai didi

c++ - 在 Ubuntu x64 上链接 Boost

转载 作者:行者123 更新时间:2023-11-30 05:28:39 26 4
gpt4 key购买 nike

在阅读了很多关于此事的 SO 问题之后,我就是无法让它发挥作用。我下载了 boost_1_60_0,然后运行命令来构建它:

sudo ./bootstrp.sh --prefix=/home/ricardo/boostlib
sudo ./b2 install -j8

我什至试过像这样运行 b2:

sudo ./b2 install -j8 architecture=x86 address-model=64 

没关系。错误总是一样的:

main.cpp:(.text+0x7e): undefined reference to `boost::system::generic_category()'
main.cpp:(.text+0x8a): undefined reference to `boost::system::generic_category()'
main.cpp:(.text+0x96): undefined reference to `boost::system::system_category()'

是的,我知道。链接错误,应该与 -lboost_system 一起运行。是的,你应该放 -L/home/ricardo/booSTLib/lib。我知道。

这是我的 CMake 的样子:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -L/home/ricardo/boostlib/lib -lboost_system -Wl,--verbose")

include_directories("/home/ricardo/boostlib/include")

您可能会问:-Wl,--verbose 的输出是什么?好吧,令人惊讶的是,找到了 libboost_system.so:

attempt to open /home/ricardo/boostlib/lib/libboost_system.so succeeded
-lboost_system (/home/ricardo/boostlib/lib/libboost_system.so)

好的。图书馆找到了。我仍在尝试寻找一些替代方案,到目前为止似乎没有任何效果。所以,即使我将它与 boost 链接起来,并且已经找到了 boost_system,该程序仍然无法编译,原因是……为什么?谁能给我解释一下?

编辑:How to link C++ program with Boost using CMake似乎在工作。尽管我仍然想知道为什么我的方法不起作用,以及当我想仅使用 g++ 编译器而不使用 CMake 和 Make 来链接 boost 时我应该怎么做。我之前已经能够成功链接到 Openblas,所以我想知道为什么它不能与 Boost 一起使用。

Edit2:这是我在运行 make VERBOSE=1 后得到的 g++ 命令,现在我可以看到源代码被放在依赖项之后。

 -std=c++11 -L/home/ricardo/boostlib/lib -lboost_system   CMakeFiles/prophet-service.dir/main.cpp.o  -o prophet-service -rdynamic

这是我当前的 CMake 文件:

cmake_minimum_required(VERSION 3.2)
project(prophet-service)
set(SOURCE_FILES
main.cpp)
include_directories("/home/ricardo/boostlib/include")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -L/home/ricardo/boostlib/lib -lboost_system")
add_executable(prophet-service ${SOURCE_FILES})

我似乎也没有libbost_system.a 文件。至少现在我知道我需要 .a 文件而不是 .so 文件。

最佳答案

您的链接顺序是否正确?具有依赖性的事物需要在满足依赖性的事物之前进行。

关于c++ - 在 Ubuntu x64 上链接 Boost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36717027/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com