繁体   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