1

我正在使用 PXA270 Xscale 开发板(类似于 Gumstix),并提供了一个交叉编译器,但它是 GCC 3.3.3。我想学习如何构建自己的交叉编译器,这样我就可以自定义设置,但是在获取 crosstools 和 crosstools-ng 以成功构建工具链时遇到了麻烦。我的主要需求是使用 GCC 4.2.X 和使用软浮点的能力。我正在运行 Ubuntu 9。有人对为这样的系统构建工具链有任何建议或建议吗?

提前致谢,

4

5 回答 5

2

www.gnuarm.com提供了构建您自己的 ARM 交叉编译器的说明以及可供下载的二进制文件。他们那里没有 GCC 4.2.x,但我使用与这些说明非常相似的步骤构建了它,没有太多问题。

为什么要软件浮点?这将非常缓慢;大多数应用程序只需要使用定点实现(读取:整数)。

于 2010-02-06T04:07:49.373 回答
1

简短的回答,非常困难。更长的答案,继续尝试,您可能会偶然发现它,但可能不会。带有硬浮点的 Xscale 更有可能,只是不使用任何浮点。我知道我尝试了很多组合但都失败了。您正在寻找的组合通常使用较旧的 gcc(最后一个工作)是有原因的。您可能会查看 codesourcery 以了解他们拥有什么,使用那里的工具或了解他们在做什么可能是您最好的选择。

于 2010-02-06T04:09:41.287 回答
1

如果您无法使用 crosstool* 构建交叉编译器,那么没有它们您就不可能做到。这并不简单!

但是,您可以通过编辑/etc/apt/sources.list包括

deb http://www.emdebian.org/debian/ lenny main

然后说

apt-get 更新
apt-get install g{cc,++}-4.3-arm-linux-gnueabi

于 2010-02-12T16:38:47.187 回答
1

我也使用了crosstool,并且能够在Cygwin下构建一个arm-xscale-linux-gcc。说明在这里: http: //sourceforge.net/apps/mediawiki/imote2-linux/index.php ?title=ToolsGccArm

于 2010-04-21T23:55:52.217 回答
1

我使用 Dan Kegel 的交叉工具来创建我的手臂交叉工具链。尝试了几次,但我最终能够做到这一点。

我建议查看各种架构的构建结果矩阵,以帮助确定 gcc、glibc、binutils 和 linux 内核头文件的合适组合。

以下是我用来创建手臂交叉工具链的脚本。我意识到我的要求与您的要求有些不同,但您可以根据自己的需要进行修改。

#!/bin/sh

set -ex

# Extract crosstool
tar zxf crosstool-0.43.tar.gz
ln -sf crosstool-0.43 crosstool

# Create .dat file for toolchain
cat << EOF > $HOME/arm-cross.dat

BINUTILS_DIR=binutils-2.15
GCC_DIR=gcc-3.4.5
GCC_EXTRA_CONFIG=--with-float=soft
GCC_LANGUAGES=c,c++
GLIBC_ADDON_OPTIONS==linuxthreads,
GLIBC_DIR=glibc-2.3.6
GLIBC_EXTRA_CONFIG=--without-fp
GDB_DIR=gdb-6.5
KERNELCONFIG="\$HOME/crosstool/arm.config"
LINUX_DIR=linux-2.6.12.6
LINUX_SANITIZED_HEADER_DIR=
SHARED_MODE=--enable-shared
TARGET=arm-softfloat-linux-gnu
TARGET_CFLAGS=-O

BUILD_DIR="\$HOME/crosstool/build/\$TARGET/\$GCC_DIR-\$GLIBC_DIR"
PREFIX="/usr/crossgnu/\$GCC_DIR-\$GLIBC_DIR/\$TARGET"
SRC_DIR="\$HOME/crosstool/build/\$TARGET/\$GCC_DIR-\$GLIBC_DIR"
TARBALLS_DIR="\$HOME/downloads"
TOP_DIR="\$HOME/crosstool"

EOF

# Create toolchain directory
sudo mkdir -p /usr/crossgnu
sudo chown $USER /usr/crossgnu

# Build toolchain
pushd crosstool
eval `cat $HOME/arm-cross.dat` sh all.sh --gdb --notest
popd

注意:我在运行脚本的同一目录中有crosstool-0.43.tar.gz压缩包。

于 2010-02-10T17:19:50.720 回答