Советы по созданию кросс-компилятора для Xscale ARM?

Я играю с платой разработки PXA270 Xscale (аналогичной Gumstix), и мне предоставили кросс-компилятор, но это GCC 3.3.3. Я хотел бы узнать, как создать свой собственный кросс-компилятор, чтобы я мог настроить его, но у меня были проблемы с получением crosstools и crosstools-ng для успешной сборки цепочки инструментов. Моими основными потребностями являются использование GCC 4.2.X и возможность использовать soft float. Я использую Ubuntu 9. У кого-нибудь есть какие-либо рекомендации или советы по созданию набора инструментов для такой системы?

Заранее спасибо,

Бен

5 ответов

http://www.gnuarm.com/ есть инструкции по созданию собственного кросс-компилятора ARM, а также файлы, доступные для загрузки. У них там нет GCC 4.2.x, но я построил его, используя шаги, очень похожие на эти инструкции, без особых проблем.

Почему вы хотите программное обеспечение с плавающей точкой? Это будет очень медленно; большинству приложений действительно нужно использовать реализацию с фиксированной запятой (читай: целые числа).

Если вам не удается построить кросс-компилятор с использованием crosstool*, вы вряд ли сможете сделать это без них. Это не просто!

Тем не менее, вы можете легко получить последние кросс-компиляторы на Ubuntu, отредактировав /etc/apt/sources.list включать

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

потом говорю

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

Я тоже использовал crosstool и смог собрать arm-xscale-linux-gcc под Cygwin. Инструкции находятся здесь: http://sourceforge.net/apps/mediawiki/imote2-linux/index.php?title=ToolsGccArm

Короткий ответ, очень сложно. Более длинный ответ, продолжайте пытаться, вы можете наткнуться на это, но, вероятно, нет. Xscale с hard float более вероятен и просто не использует плавающую точку. Я знаю, что перепробовал много комбинаций и потерпел неудачу. Существует причина, по которой комбинация, которую вы ищете, обычно использует более старый gcc, последний из которых работает. Вы могли бы взглянуть на кодовые источники, чтобы увидеть, что у них есть, использовать там инструменты или узнать, что они делают, вероятно, ваш лучший выбор.

Я использовал кросс-инструмент Дэна Кегеля для создания моей крестообразной цепочки для инструментов. Потребовалось несколько попыток, но в итоге я смог сделать это правильно.

Я рекомендую просмотреть матрицу результатов сборки для различных архитектур, чтобы определить подходящую комбинацию заголовков ядра 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

Примечание: у меня был tarball- архив crosstool-0.43.tar.gz в том же каталоге, из которого я запускал скрипт.

Другие вопросы по тегам