使用 Cygwin 构建 boost 的问题

发布于 2021-11-08 10:45:04 字数 1824 浏览 682 评论 3

我试图使用 cygwin 构建一个用 boost 开发的应用,然后希望在 linux 下来运行这个程序。我下载了最新版本的 boost 1.46.1 ,然后依照指南进行处理:http://www.boost.org/doc/libs/1_46_1/more/getting_started/unix-variants.html.

程序启动和引导都没问题,但当我检查 stage/lib 目录时发现都是 .dll, .dll.a .a 等文件,我需要包含哪些文件才能在 linux 下运行呢?我希望是一些 so 文件,但实际上这是 dll 文件。

第二个问题:

下面是我的测试代码,非常简单:

#include <boost/asio.hpp>
#include <boost/bind.hpp>

int main(void) {

    return 0; 

}  

编译后链接的错误信息如下:

Invoking: GCC C++ Linker
/opt/Mx800SDK/vfitc/cross/bin/arm-linux-g++ -L../lib -o'boostTest' ./boostTest.o ./include/boost/fusion/include/adapt_adt_named.o -lpthread -lboost_system -lstdc++
./boostTest.o(.text+0x498): In function `__static_initialization_and_destruction_0(int, int)':
: undefined reference to `boost::system::system_category()'
./boostTest.o(.text+0x4b0): In function `__static_initialization_and_destruction_0(int, int)':
: undefined reference to `boost::system::system_category()'
./boostTest.o(.text+0x4c8): In function `__static_initialization_and_destruction_0(int, int)':
: undefined reference to `boost::system::generic_category()'
./boostTest.o(.text+0x4e0): In function `__static_initialization_and_destruction_0(int, int)':
: undefined reference to `boost::system::generic_category()'
./boostTest.o(.gnu.linkonce.t._ZN5boost4asio6detail20posix_tss_ptr_createERj+0x60): In function `boost::asio::detail::posix_tss_ptr_create(unsigned int&)':
: undefined reference to `boost::system::system_category()'

请大家帮忙看看具体是什么回事?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

浅沫记忆 2021-11-12 09:11:38

第一个问题:
C 语言的跨平台性只能是源码级的,而不像 Java 是二进制级的,因此你需要在 Linux 下进行构建

悲喜皆因你 2021-11-12 08:59:39

多谢,我试试看:)

成熟稳重的好男人 2021-11-12 07:27:23

第一个问题, cygwin 和 mingw一样的, 都是windows上模拟linux, 用于编译出windows平台可用的程序, 生成的文件自然都是windows平台的. 所以, 要生成so, 得到真实linux系统上用gcc编译.

第二个问题, 显然是没有找到boost.system的实现(或者编译出的lib), 命令行应该

g++  test.cpp -L"boost 的lib路径" -I"boost的头文件包含目录" -lboost_system -lboost_thread -o test

应该可以搞定.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文