我应该使用哪些路径来安装交叉编译的包?

时间:2012-11-26 15:39:44

标签: cross-compiling mingw-w64

我在$HOME/mingw32

中安装了MinGW-W64
~$ ls -l mingw32
insgesamt 32
drwxr-xr-x  2 js js 4096 16. Aug 16:41 bin
drwxr-xr-x 10 js js 4096 26. Nov 14:49 i686-w64-mingw32
drwxr-xr-x  2 js js 4096 16. Aug 16:28 include
drwxr-xr-x  3 js js 4096 16. Aug 16:41 lib
drwxr-xr-x  3 js js 4096 16. Aug 16:36 libexec
drwxr-xr-x 14 js js 4096 16. Aug 16:41 licenses
drwxr-xr-x  4 js js 4096 26. Nov 15:17 QtWin32
drwxr-xr-x  6 js js 4096 16. Aug 16:41 share
~$

这是因为提取i686-w64-mingw32-gcc-4.7.1-2-release-linux64_rubenvb.tar.xz.tar并在我的linux64构建系统上为windows32主机安装了交叉编译的各种软件。例如,libpng

$ ./configure --prefix=$HOME/mingw32/i686-w64-mingw32 --host=i686-w64-mingw32

要使用已安装的工具,我必须将$HOME/mingw32/i686-w64-mingw32/bin添加到我的PATH环境变量中。但是,我不愿意这样做,因为这个二进制目录包含

$ ls $HOME/mingw32/i686-w64-mingw32/bin
ar g++ gcc ld nm objcopy ranlib strip # much more 

因此我认为安装交叉编译包的正确位置可能是$HOME/mingw32,这样我就可以省略$HOME/mingw32/i686-w64-mingw32/bin添加到PATH。但是,这不起作用,因为当这些标头安装到./configure时,多个$HOME/mingw32/include脚本无法找到我之前安装的其他软件包的标头。当我将它们安装到$HOME/mingw32/i686-w64-mingw32/include时,它们是由./configure脚本找到的。

我是否需要做一些特别的事情来告诉交叉编译器将$HOME/mingw32/include作为内置包含路径?就像本地编译器内置/usr/include非常相似。

因此我不确定使用的正确前缀是什么。有人可以解释$HOME/mingw32/$HOME/mingw32/i686-w64-mingw32的正确路径和确切含义吗?

1 个答案:

答案 0 :(得分:0)

使用Cygwin MinGW-w64安装到/usr,例如

/usr/bin/i686-w64-mingw32-gcc

所以我建议使用这个,或者/usr/local。至于include,你可以像这样找到正确的路径

$ touch a.c

$ i686-w64-mingw32-gcc -v a.c |& awk '/#include/,/End/'
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/i686-w64-mingw32/4.5.3/include
 /usr/lib/gcc/i686-w64-mingw32/4.5.3/include-fixed
 /usr/i686-w64-mingw32/sys-root/mingw/include
End of search list.

source