나는 팔로우하고 있다CLFS 도서(GIT-20140613-arm 버전), armv7과 네온 조합으로 GCC를 구축하는 데 문제가 있습니다.대상 정보는 여기.
내 호스트는 gawk, build-essential, texinfo 및 libncurses5-dev 패키지가 포함된 깨끗한 Debian 8입니다. 자세한 내용을 확인할 수 있습니다.여기에서 찾을 수 있습니다.
내가 그랬어이번 패치gcc-4.9를 사용하여 binutil을 빌드합니다.
지침에 따라 GCC가 처음으로 컴파일될 때 이러한 암 조합에서는 작동이 불가능하다고 주장합니다.
checking for suffix of object files... configure: error: in `/mnt/clfs/sources/gcc-build/arm-linux-musleabihf/libgcc':
configure: error: cannot compute suffix of object files: cannot compile
See `config.log' for more details.
위에서 config.log
우리는 다음을 볼 수 있습니다:
conftest.c:1:0: error: target CPU does not support ARM mode
나는 연결했다여기서 완전히 틀렸어.
내 연구에서 나는 발견했습니다.이 문제--with-mode=thumb
동일하게 들리지만 OP는 매우 오래된 버전의 CLFS 책을 따르고 있으며 를 추가하여 이 오류를 극복했지만 ./configure
musl은 실패합니다.
arm-linux-musleabihf-gcc -std=c99 -nostdinc -ffreestanding -fexcess-precision=standard -frounding-math -D_XOPEN_SOURCE=700 -I./arch/arm -I./src/internal -I./include -Os -pipe -fomit-frame-pointer -fno-unwind-tables -fno-asynchronous-unwind-tables -Wa,--noexecstack -Werror=implicit-function-declaration -Werror=implicit-int -Werror=pointer-sign -Werror=pointer-arith -fno-stack-protector -c -o crt/crt1.o crt/arm/crt1.s
crt/arm/crt1.s: Assembler messages:
crt/arm/crt1.s:6: Error: only lo regs allowed with immediate -- `mov fp,#0'
crt/arm/crt1.s:7: Error: only lo regs allowed with immediate -- `mov lr,#0'
crt/arm/crt1.s:8: Error: Thumb does not support this addressing mode -- `ldr a2,[sp],#4'
crt/arm/crt1.s:11: Error: lo register required -- `str fp,[sp,#-4]!'
crt/arm/crt1.s:12: Error: Thumb does not support this addressing mode -- `str a1,[sp,#-4]!'
crt/arm/crt1.s:13: Error: Thumb does not support this addressing mode -- `str a4,[sp,#-4]!'
Makefile:112: recipe for target 'crt/crt1.o' failed
make: *** [crt/crt1.o] Error 1
나도 가지고 있어시도 vfp
하고 vfpv3
결합하십시오, 그리고 나도 있어요Linaro GCC를 사용해 보세요바꾸다GNU 하나, 전혀 행운이 없습니다.
어느 시점에서는 Raspberry Pi One(하드, vfp 및 armv6)을 사용하여 책을 성공적으로 완료했지만 Beaglebone 콤보에 문제가 있습니다.
내가 무엇을 놓치고 있나요? 내 환경이 맞나요? 그렇다면, 이 문제를 극복하기 위해 무엇을 할 수 있습니까?
답변1
BeagleBone Black의 경우 올바른 환경 설정은 armv7-a
다음과 같습니다.여기그리고여기, 다음에서 커널 설정을 가져와야 합니다.여기을 사용 bb.org_defconfig
하고 다음의 헤더를 사용합니다.여기및 gcc
패치여기을 사용하고 최종 gcc
버전을 빌드하는 데 사용하는 것을 잊지 마십시오 --disable-libsanitizer
.
빌드하기 전에 다음 명령을 사용했습니다 musl
.
sed -i 's/\/dev\/null\/utmp/\/var\/run\/utmp/g;s/\/dev\/null\/wtmp/\/var\/log\/wtmp/g' include/paths.h include/utmp.h
그리고 문제를 busybox
해결하려면 빌드하기 전에 다음을 수행하십시오 .wtmp
sed -i 's/\(CONFIG_\)\(.*\)\(INETD\)\(.*\)=y/# \1\2\3\4 is not set/g;s/\(CONFIG_IFPLUGD\|CONFIG_ASH_HELP\|CONFIG_FEATURE_VERBOSE\|CONFIG_UEVENT\)=y/# \1 is not set/' .config
sed -i '/utmpx\.h/,/endif/s/__UCLIBC__/LIBBB_H/' include/libbb.h
전체 포장 목록:
wget -cO bootscripts-embedded-HEAD.tar.gz -c 'http://git.clfs.org/?p=bootscripts-embedded.git;a=snapshot;h=HEAD;sf=tgz'
wget -cO gcc-5.2.0-musl-1.patch 'https://raw.githubusercontent.com/GregorR/musl-cross/master/patches/gcc-5.2.0-musl.diff'
wget -c \
'http://ftp.gnu.org/gnu/binutils/binutils-2.25.1.tar.bz2' \
'http://busybox.net/downloads/busybox-1.24.0.tar.bz2' \
'ftp://gcc.gnu.org/pub/gcc/releases/gcc-5.2.0/gcc-5.2.0.tar.bz2' \
'http://ftp.gnu.org/gnu/gmp/gmp-5.1.3.tar.xz' \
'http://sethwklein.net/iana-etc-2.30.tar.bz2' \
'http://ftp.barfooze.de/pub/sabotage/tarballs/kernel-headers-3.12.6-5.tar.xz' \
'https://github.com/beagleboard/linux/archive/4.1.tar.gz' \
'ftp://ftp.denx.de/pub/u-boot/u-boot-2015.10.tar.bz2' \
'ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz' \
'ftp://ftp.gnu.org/gnu/mpfr/mpfr-3.1.3.tar.xz' \
'http://www.musl-libc.org/releases/musl-1.1.9.tar.gz' \
'https://matt.ucc.asn.au/dropbear/releases/dropbear-2015.68.tar.bz2' \
'http://www.red-bean.com/~bos/netplug/netplug-1.2.9.2.tar.bz2' \
'http://downloads.sourceforge.net/libpng/zlib-1.2.9.tar.gz' \
'http://patches.clfs.org/embedded-dev/iana-etc-2.30-update-2.patch' \
'http://patches.clfs.org/embedded-dev/netplug-1.2.9.2-fixes-1.patch' \
'http://downloads.sourceforge.net/libpng/zlib-1.2.8.tar.gz'
이로써 모든 문제가 해결되었습니다.