簡體   English   中英

使用linux上的mingw與clang交叉編譯

[英]cross-compile with clang using mingw on linux

我試圖在linux下為windows編譯。 我已經為linux和w64-mingw安裝了binutils multilib。 如果我用x86_64-w64-mingw-gcc編譯一切正常,但是如果我使用clang -target x86_64-w64-mingw或x86_64-windows-gnu編譯器給我很多警告和windows.h的包含錯誤。

問題是什么? Clang不支持mingw binutils?

PS我也對freebsd的cross-compilig感興趣,我在哪里可以找到針對freebsd的binutils?

非常感謝你提前:)

-target是不夠的,你還需要指定include目錄,即:

clang -target i686-w64-mingw32 -nostdinc -fno-exceptions -isystem /opt/compiler/llvm-3.6/bin/../lib/clang/3.6.0/include -isystem /opt/compiler/mingw-w64/i686-w64-mingw32/include -isystem /opt/compiler/mingw-w64/i686-w64-mingw32/include/c++/4.9.2 -isystem /opt/compiler/mingw-w64/i686-w64-mingw32/include/c++/4.9.2/backward -isystem /opt/compiler/mingw-w64/i686-w64-mingw32/include/c++/4.9.2/i686-w64-mingw32

您可能會發現我的項目很有用: https//github.com/tpoechtrager/wclang - 該工具正在執行所有令人討厭的包含目錄搜索。

我的ELLCC項目包與庫有關,包括可以針對多個目標的文件,包括使用MinGW-64包含的各種Linux目標和Windows以及庫。 我有一個稍微修改過的clang版本,我稱之為ecc ,它支持配置文件以指定獲取包含文件的位置,如何鏈接等.clang / mingw的典型配置文件如下所示 我修改了clang的-target選項以檢查適用的配置文件並使用它(如果存在)。例如,要以64位Windows為目標,使用命令行

ecc -target x86_64-w64-mingw32 hello.c

要為例如ARM Linux系統編譯相同的程序,可以使用命令行

ecc -target arm-linux-engeabihf hello.c

此處提供了支持目標的完整列表。 各種Linux主機和Windows預編譯的二進制包可用 這些軟件包包括支持所有目標的binutils和GDB。

暫無
暫無

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

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