Re: [EXTERNAL] Re: Compiling GCC 11 for Windows targeting ARM on Linux

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

 



On Tue, 11 Jan 2022 at 03:45, Thomas Sobczynski via Gcc-help
<gcc-help@xxxxxxxxxxx> wrote:
>
> Update: I kept peering at the configure scripts and their embedded comments, and concluded that it's at least worth trying to add "--with-newlib" to the configure script parameters. That may not be the right move, but it did get me further into the build process. However, although its configure script finished, the GCC build seems unable to compile libstdc++ (tail end of output below).
>
> Am I barking up the wrong tree with "--with-newlib"?
>
> Does it make sense that the build is supplying include search directories from the GCC v11 build tree (compiler being compiled) to the native cross compiler which is GCC v9.x?

Yes. You are compiling the libstdc++ from GCC 11, so it has to look at
the headers for the GCC 11 version of libstdc++.

You can't use GCC 9 to compile libstdc++ from GCC 11, because GCC 9
doesn't support all the C++ features used in the GCC 11 lirbary (this
is nothing to do with cross compilation, you can never use a
mismatching version of GCC, newer or older, to compile libstdc++, it
just doesn't usually happen unless cross compiling like this).

You need a newer arm cross compiler (ideally it should exactly match
the version of GCC you are trying to build).



> I already misunderstood the build/host/target config earlier. Is it perhaps not _a_ GCC cross toolchain that I need, but perhaps I need to build _the_ compiler (v11) and then turn around and use it to build for the non-native Host?

No.


This might help, it's a script I used last week to build a build!=host
compiler. You'll need to adjust the flags for your own case:

#!/bin/bash

gcc_common_args='--enable-languages=c++ --disable-nls --without-isl
--disable-libcc1 --disable-libgomp --disable-libsanitizer
--disable-libitm --without-lto --disable-multilib'

# Native GCC compiler
mkdir -p ~/build-canada/gcc-native
cd ~/build-canada/gcc-native
$skip1 ~/src/gcc/configure --prefix=$HOME/gcc/12 $gcc_common_args
--disable-bootstrap
make -j10 && make install

# Use the new native GCC
PATH=$HOME/gcc/12/bin:$PATH

# Cross binutils
mkdir -p ~/build-canada/binutils
cd ~/build-canada/binutils
$skip2 ~/src/binutils-gdb/configure --prefix=$HOME/gcc/aarch64
--disable-gdb --disable-sim --disable-werror \
--target=aarch64-none-linux-gnu \
--build=x86_64-pc-linux-gnu \
--with-sysroot=/home/iains/cross-roots/aarch64-none-linux-gnu
make -j10 && make install

# Cross GCC
mkdir -p ~/build-canada/gcc-cross
cd ~/build-canada/gcc-cross
$skip3 ~/src/gcc/configure --prefix=$HOME/gcc/aarch64 $gcc_common_args \
--target=aarch64-none-linux-gnu \
--build=x86_64-pc-linux-gnu \
--with-sysroot=/home/iains/cross-roots/aarch64-none-linux-gnu
make -j10 && make install

# Use new aarch64-none-linux-gnu-ld and aarc64-none-linux-gnu-g++ etc
PATH=$PATH:$HOME/gcc/aarch64/bin

# "Native cross" GCC
mkdir -p ~/build-canada/gcc-native-cross
cd ~/build-canada/gcc-native-cross
$skip4 ~/src/gcc/configure --prefix=/not/going/to/install $gcc_common_args \
--target=aarch64-none-linux-gnu \
--host=aarch64-none-linux-gnu \
--build=x86_64-pc-linux-gnu \
--with-sysroot=/home/iains/cross-roots/aarch64-none-linux-gnu
make -j10
#!/bin/bash




[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