簡體   English   中英

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不打包Boost版本的Windows版本。 Boost.org在Sourceforge上分發了預構建的Windows二進制文件,但是它們僅針對MSVC ++構建,因此與mingw-w64二進制不兼容。

要交叉編譯boost庫,建議您咨詢:

特別:

和:

和:

我自己還沒有這樣做,所以無法談談您可能遇到的任何障礙。

其他一些Linux發行版打包mingw boost二進制文件,例如

如果出於某種原因無法在類似Unix的環境之一(cygwin,MYSYS2)中在Windows上構建程序,或者交叉編譯增強證明太難了,那么您可以考慮在Fedora / ArchLinux VM中交叉編譯程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM