Советы по созданию кросс-компилятора для Xscale ARM? - PullRequest
1 голос
/ 05 февраля 2010

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

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

Ben

Ответы [ 5 ]

2 голосов
/ 06 февраля 2010

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

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

1 голос
/ 22 апреля 2010

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

1 голос
/ 12 февраля 2010

Если вам не удается построить кросс-компилятор с использованием 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
1 голос
/ 10 февраля 2010

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

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

1 голос
/ 06 февраля 2010

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

...