mingw-w64无法链接到boost
mingw-w64 cannot link to boost
我安装了g++-mingw-w64-i686
来编译适用于linux上的windows的c++11
应用程序:
sudo apt-get install g++-mingw-w64-i686
sudo apt-get install libc6-dev-i386
我想知道为什么它不能链接以提高
main7.cpp
#include <iostream>
int main()
{
std::cout<<"Hello world!n";
return 0;
}
编译:
$ i686-w64-mingw32-g++ main7.cpp -Wfatal-errors -o main -std=c++11 -I'/usr/include/c++/4.9' -L'/usr/lib' -L'/usr/i686-w64-mingw32/lib' -lboost_system -lboost_thread -lboost_serialization -pthread
结果:
/usr/bin/i686-w64-mingw32-ld: cannot find -lboost_system
/usr/bin/i686-w64-mingw32-ld: cannot find -lboost_thread
/usr/bin/i686-w64-mingw32-ld: cannot find -lboost_serialization
collect2: error: ld returned 1 exit status
make: *** [all] Error 1
gcc
工作时:
g++ main7.cpp -Wfatal-errors -o main -std=c++11 -I'/usr/include/c++/4.9' -L'/usr/lib' -lboost_system -lboost_thread -lboost_serialization -pthread
$ g++ --version
g++(Ubuntu 4.9.3-8ubuntu2~14.04)4.9.3
您需要从源代码交叉编译要链接到的Boost库。Ubtuntu不打包Windows版本的Boost库。Boost.org在Sourceforge上分发预先构建的Windows二进制文件,但它们仅为MSVC++构建,因此与mingw-w64不二进制兼容。
要交叉编译boost库,我建议您咨询:
- Boost:开始
特别是:
- 易于构建和安装
和:
- 交叉编译
和:
- Ubuntu:如何从源代码安装boost
我自己没有这样做,所以不能谈论你可能遇到的任何障碍。
其他一些linux发行版打包了mingw-boost二进制文件,例如
-
ArchLinux
-
Fedora
如果有某种原因导致您无法在Windows上一体构建程序类unix环境(cygwin、MYSYS2)或交叉编译boost太难了,那么您可以考虑在Fedora/ArchLinux虚拟机中交叉编译程序。
相关文章:
- 基于boost的程序的静态链接——zlib问题
- 在Cygwin上链接Boost库
- CMAKE中无法链接Boost
- 使用cmake错误链接boost日志
- 程序使用boost::文件系统链接clang,但不使用gcc
- 编译时出现Boost.python链接错误
- 链接问题 boost::p ython::numpy.
- 将 boost 与 Visual Studio 和 vcpkg 链接时出错
- 如何在 Oracle Linux 上的 Eclipse 中编译和链接 boost 库
- 使用 BOOST property_tree / iostreams / 文件系统 / foreach - 结果出现链接
- 链接 boost 库时"Error while loading shared libraries"引发的,除了我无法使用 root 访问权限来修复它
- boost::存在符号链接不取消引用
- Android Studio 链接器命令在包含 Boost 库时失败
- 如何链接到与 Linux 中不同版本的 boost 链接的共享库
- boost/filesystem.hpp未通过Homebrew安装的OSX Boost链接
- Boost:链接由bjam命名的库时出现致命错误LNK1104
- Boost链接错误-单个未定义的引用
- 使用仅头文件库时,Boost链接器错误
- dev - c++中Boost链接/构建的问题
- 我应该使用哪些编译选项来使用cl.exe与Boost链接