我正在为我的设备交叉构建本机 arm android gcc/binutils ......特别是在 KBOX 中运行(它使用 libfakechroot 在 Android 终端应用程序中创建标准 UNIX 文件系统)。我已经成功配置并制作了多个版本的 gcc/binutils,但是当我将它们传输到设备时,会发生以下两种情况之一:
a) 使用交叉构建的本机编译器编译的二进制文件(基本上是 hello world)会引发分段错误。b) 使用任何选项执行任何交叉构建的本机编译器工具...gcc 和 bintutils...会引发分段错误。
我花了几个小时尝试从大量搜索结果中拼凑出不同的配置选项,但都没有奏效。我的下一个攻击计划是(不知何故)弄清楚如何用 gcc 构建 Bionic ......但我希望有人会在下面的细节中看到我错过的东西
详细信息
交叉编译工具链: 使用 make-standalone-toolchain.sh 脚本从 Android NDK 构建的 GCC 4.7.0,针对 API 级别 14 本
机工具链:来自 devtoolset 存储库的 GCC 4.7.0
构建系统:CentOS 6.2
最新的 binutils 配置选项
sudo sh ../binutils-2.23/configure --build=x86_64-redhat-linux --host=arm-linux-eabi --
disable-option-checking --enable-ld --enable-languages=c --disable-gold --disable-fortran
--disable-libssp --disable-libquadmath --disable-libquadmath-support --disable-libada
--disable-werror --disable-multilib --with-build-time-tools=/project/arm-cc/bin
CC=arm-linux-androideabi-gcc CFLAGS='-Wall -O -mandroid -mbionic'
LDFLAGS='-Wl,--entry=main,--dynamic-linker=/system/bin/linker -lc -lgcc'
LIBCFLAGS='-O2 -mandroid -mbionic' LIBCPPFLAGS='-O2 -mandroid -mbionic' LIBCXXFLAGS='-O2 -mandroid -mbionic -fno-implicit-templates'
LIBS='-lc -lgcc'
为工具链省略 var 以节省空间
最新的 GCC 配置选项
./gcc-4.7/configure --build=x86_64-redhat-linux --host=arm-linux-eabi --disable-ld
--with-as=/opt/andv1b/usr/local/arm-linux-eabi/bin/as
--with-ld=/opt/andv1b/usr/local/arm-linux-eabi/bin/ld
--enable-version-specific-runtime-libs --enable-shared --enable-languages=c
--disable-bootstrap -disable-gold --disable-fortran --disable-libssp
--disable-libquadmath --disable-libquadmath-support --disable-libada --disable-werror
--disable-multilib --disable-libgomp --disable-cloog
--with-build-time-tools=/opt/centos/devtoolset-1.1/root/usr/bin
CC=arm-linux-androideabi-gcc
CFLAGS='-Wall -O -mandroid -mbionic'
LDFLAGS='-Wl,--entry=main,--dynamic-linker=/system/bin/linker -lc -ldl -lgcc -lm'
LIBCFLAGS='-O2 -mandroid -mbionic' LIBCPPFLAGS='-O2 -mandroid -mbionic' LIBCXXFLAGS='-O2 -mandroid -mbionic -fno-implicit-templates' LIBS='-lc -ldl -lgcc -lm -lsupc++ -lgnustl_shared'
为工具链省去变量以节省空间。