I try to build a cross gcc compiler for an older ARM platform. Installing binutils was successful but gcc fails.
Host platform linux x86_64
binutils version to cross build:2.42
gcc version to cross build: 14.1.0
What I did ( sorry, very detailed, maybe I did something totally stupid… )
First, I created a docker image with the following Dockerfile to get a root filesystem:
FROM debian:8 as base
# Needed for old Debians
RUN printf "deb [trusted=yes] http://archive.debian.org/debian jessie mainndeb [trusted=yes] http://archive.debian.org/debian-security jessie/updates main" > /etc/apt/sources.list
# Install dependencies available in the Debian repos
RUN apt-get update &&
apt-get install -y
build-essential automake libtool cmake wget
libsnmp-dev libdb-dev
libssl-dev
libopus-dev libasound2-dev vim
podman build . --arch=arm
and export the file system to my host filesystem:
podman image mount
and copied the root filesystem simply with cp -pr <path>/* <some/place/at/my/host>
I now used a simple Makefile for installing binutils:
# cross compile binutils
BINUTILS_VERSION=2.42
GCC_VERSION=14.1.0
#http://ftp.fu-berlin.de/gnu/binutils/ binutils-2.42.tar.xz
binutils_cross:
wget -nc http://ftp.fu-berlin.de/gnu/binutils/binutils-$(BINUTILS_VERSION).tar.xz
tar xf binutils-$(BINUTILS_VERSION).tar.xz
(
cd binutils-$(BINUTILS_VERSION);
mkdir build_armv7 ;
cd build_armv7;
../configure --prefix=/opt/armv7_$(GCC_VERSION) --with-sysroot=/opt/podman_debian8/merged --enable-multiarch --with-fpu=vfpv3-d16 --with-mode=thumb --with-arch=armv7-a --target=arm-linux-gnueabihf ;
make;
sudo make install;
)
binutils installation works without any error messages.
Now I tried to install gcc with this part of the install Makefile:
gcc_cross:
wget -nc http://ftp.fu-berlin.de/gnu/gcc/gcc-$(GCC_VERSION)/gcc-$(GCC_VERSION).tar.xz
tar xf gcc-$(GCC_VERSION).tar.xz
(
cd gcc-$(GCC_VERSION);
./contrib/download_prerequisites;
mkdir build_armv7;
cd build_armv7;
../configure --prefix=/opt/armv7_$(GCC_VERSION) --enable-languages=c,c++ --with-sysroot=/opt/podman_debian8/merged --enable-multiarch --with-fpu=vfpv3-d16 --with-mode=thumb --with-arch=armv7-a --target=arm-linux-gnueabihf --disable-multilib;
make -j6;
sudo make install;
)
Got following errors:
make[3]: *** [Makefile:2998: build/gengenrtl.o] Error 1
make[3]: *** Waiting for unfinished jobs....
yes
checking how to run the C preprocessor... /opt/armv7_14.1.0/arm-linux-gnueabihf/bin/as: unrecognized option '--64'
make[3]: *** [Makefile:2998: build/genhooks.o] Error 1
/opt/armv7_14.1.0/arm-linux-gnueabihf/bin/as: unrecognized option '--64'
make[3]: *** [Makefile:2998: build/sort.o] Error 1
gcc -E
/opt/armv7_14.1.0/arm-linux-gnueabihf/bin/as: unrecognized option '--64'
make[3]: *** [Makefile:2998: build/genchecksum.o] Error 1
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
/bin/sh ../../gcc/../move-if-change tmp-optionlist optionlist
checking for stdlib.h... echo timestamp > s-options
make[3]: Leaving directory '/home/krud/compiler_install/gcc-14.1.0/build_armv7/gcc'
make[2]: *** [Makefile:4714: all-gcc] Error 2
I wonder why I see the unrecognized option '--64'
message, as I try to cross build for arm32.
Did I use some wrong configure options or have missed some? Maybe already in the first step while installing binutils?