我在$HOME/mingw32
:
~$ 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
的正确路径和确切含义吗?
答案 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.