我已经安装了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
答案 0 :(得分:-2)
您需要从源代码交叉编译要链接到的Boost库。 Ubtuntu不打包Windows版本的Boost库。 Boost.org在Sourceforge上分发预构建的Windows二进制文件, 但它们仅针对MSVC ++构建,因此与mingw-w64不是二进制兼容的。
为了交叉编译boost库,我建议你咨询一下:
特别:
和
和
我自己没有这样做,所以不能谈论你可能遇到的任何障碍。
其他一些Linux发行版包括mingw boost二进制文件,例如
如果有一些原因导致您无法在Windows上构建程序 unix-like环境(cygwin,MYSYS2)或交叉编译 提升证明太难了,那么你可以考虑在Fedora / ArchLinux VM中交叉编译你的程序。