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