Re: problems building cross compiler on x86 host for arm

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 12/06/2024 11:30, Klaus Rudolph via Gcc-help wrote:
> 
> 
> 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:
> 
> Dockerfile:
> #########
> FROM debian:8 as base
> # Needed for old Debians
> RUN printf "deb [trusted=yes] http://archive.debian.org/debian jessie
> main\ndeb [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;\
>                 )
> ###########
> 
> 
> 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?

I think it's the PATH that you're using while building GCC.  Binutils installs several versions of the assembler under different names, but the one you'll want in a normal cross compiler will be called arm-none-eabi-as (not just 'as').  The problem is that your native compiler (which is used to build the 'gen*' programs needs an assembler as well, and since that is using the system compiler it uses 'as' directly; but you've overridden that with your cross assembler.

Hope that helps,

R.

> 
> Thanks
>  Klaus




[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux