构建 GCC 交叉编译器(从“Linux"到“Windows") [英] Building GCC cross compiler (from "Linux" to "Windows")

查看:110
本文介绍了构建 GCC 交叉编译器(从“Linux"到“Windows")的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想构建gcc 交叉编译器"以在Linux"环境下编译c/c++"应用程序,但用于Windows"目标.

I want to build "gcc cross-compiler" to compile "c/c++" applications on "Linux" environment but for "Windows" target.

到目前为止我已经做到了:

I have made this so far:

  1. 安装了GCC 的先决条件"页面.

下载所需资源:
"
gcc-core-4.4.1", "gcc-g++-4.4.1", "binutils-2.19.1", "w32api-3.13-mingw32", "mingwrt-3.16-mingw32"

Downloaded required sources:
"gcc-core-4.4.1", "gcc-g++-4.4.1", "binutils-2.19.1", "w32api-3.13-mingw32", "mingwrt-3.16-mingw32"

创建了这个目录层次结构:
"${HOME}/gcc/" - 用于最终的交叉编译器
"${HOME}/src/" - 用于来源
"${HOME}/src/build-binutils/i386-mingw32/" - 用于将 binutils 构建到 "i386-mingw32" 目标
"${HOME}/src/build-gcc/i386-mingw32/" - 用于将 gcc 构建到 "i386-mingw32" 目标

Created this directory hierarchy:
"${HOME}/gcc/" - for final cross-compiler
"${HOME}/src/" - for sources
"${HOME}/src/build-binutils/i386-mingw32/" - for building binutils to "i386-mingw32" target
"${HOME}/src/build-gcc/i386-mingw32/" - for building gcc to "i386-mingw32" target

构建 binutils 包:

Builded binutils package:

cd "${HOME}/src/build-binutils/i386-mingw32/"
../../binutils-2.19.1/configure --prefix="${HOME}/gcc" --target=i386-mingw32 --disable-nls
制作
进行安装

cd "${HOME}/src/build-binutils/i386-mingw32/"
../../binutils-2.19.1/configure --prefix="${HOME}/gcc" --target=i386-mingw32 --disable-nls
make
make install

将w32api"和mingwrt"标头复制到安装目录:

Copied "w32api" and "mingwrt" headers to the install directory:

cp -R "${HOME}/src/w32api-3.13-mingw32/include" "${HOME}/gcc/i386-mingw32"
cp -R "${HOME}/src/mingwrt-3.16-mingw32/include" "${HOME}/gcc/i386-mingw32"

cp -R "${HOME}/src/w32api-3.13-mingw32/include" "${HOME}/gcc/i386-mingw32"
cp -R "${HOME}/src/mingwrt-3.16-mingw32/include" "${HOME}/gcc/i386-mingw32"


现在,当我尝试构建c(仅)交叉编译器"时:


And now when I am trying to build the "c (only) cross-compiler":

cd "${HOME}/src/build-gcc/i386-mingw32/"
../../gcc-4.4.1/configure --prefix="${HOME}/gcc" --target=i386-mingw32 --enable-languages=c --with-headers="${HOME}/gcc/i386-mingw32/include" --disable-nls
make<br>

它正在构建大约 4 分钟的东西,然后给了我这些错误:

it was building something about 4 minutes and then gives me these errors:

${HOME}/gcc/i386-mingw32/bin/ld: dllcrt2.o: No such file: No such file or directory
collect2: ld returned 1 exit status
make[2]: *** [libgcc_s.dll] Error 1
make[2]: Leaving directory `${HOME}/src/build-gcc/i386-mingw32/i386-mingw32/libgcc'
make[1]: *** [all-target-libgcc] Error 2
make[1]: Leaving directory `${HOME}/src/build-gcc/i386-mingw32'
make: *** [all] Error 2

从那条错误消息中,我真的不知道现在该怎么办 :-((( .

From that error message I really don't know what to do now :-((( .


有谁知道问题出在哪里?
谢谢.


Does anybody know where is the problem?
Thanks.

推荐答案

其实没关系:事情的发展,你需要

That's actually OK: the way things go, you need to

  1. 构建 binutils
  2. 安装标头
  3. 构建一个部分 C 编译器:足以创建目标文件,但不足以链接
  4. 构建 win32api 和 mingw 运行时(包括您丢失的 dllcrt2.o)
  5. 构建一个完整的 C 编译器(以及其他前端,如 C++、Fortran、Ada 等,如果需要的话)

您已成功执行上述第 3 步;它无法构建 libgcc(这是一个 GCC 支持库),但这意味着 C 编译器核心是正常的(虽然它无法链接,但它仍然可以创建有效的目标文件).您可以通过查看 GCC 构建目录中的 gcc/xgcc 文件来检查.

You have successful performed step 3 above; it fails building libgcc (which is a GCC support library), but that means the C compiler core is functionnal (although it won't be able to link, it can still create valid object files). You can check that by looking at the gcc/xgcc file in your GCC build directory.

所以,你需要进行下一步,不要担心你当前的失败.

So, you need to go to the next step, not worrying about your current failure.

(要实际安装部分 C 编译器,您应该运行带有 -k 选项的 make 以使其发挥最佳性能,即使遇到错误也是如此.例如,使用 make -k install.)

(To actuall install the partial C compiler, you should run make with the -k option, to have it do it best, even in the face of errors. For example, use make -k install.)

这篇关于构建 GCC 交叉编译器(从“Linux"到“Windows")的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆