2010-02-05 3 views
1

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

Спасибо заранее,

Бен

ответ

2

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

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

+0

Я использую стороннюю библиотеку, где у меня нет доступа к источнику, поэтому я не могу изменить код на фиксированную точку. Согласно - http: //wiki.debian.org/ArmEabiPort - «Поскольку модуль с плавающей запятой FPA реализован только в очень немногих ядрах ARM, в наши дни инструкции FPA эмулируются в ядре с помощью ошибок нелегальной команды. Это, конечно, очень неэффективно: примерно в 10 раз медленнее это -msoft-float для программа проверки FIR ». – user21293

+0

Если вы не можете перекомпилировать библиотеку, поддержка мягкого плавания в вашем компиляторе не поможет вам. Если в вашем ядре нет аппаратного обеспечения для плавающей запятой, но в вашей библиотеке содержатся инструкции FP, вам нужно будет сделать, когда ваша ссылка упоминает и реализует неопределенный обработчик исключений команд для имитации операций с плавающей запятой. –

1

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

1

Я использовал Dan Kegel's crosstool для создания моей крестообразной перекладины. Потребовалось несколько попыток, но в итоге я смог исправить это.

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

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

Однако, вы можете наиболее легко получить последние кросс-компилятор на 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