On Sun, Jun 9, 2019 at 10:21 AM Dennis Clarke <dclarke@xxxxxxxxxxxxx> wrote: > Something that seems missing is the a whole section for actually > building GCC from its sources and getting it installed. There is > no such section in the manual itself. There are instuctions of > course ( https://gcc.gnu.org/install/ ) but they skim over most > details with little or zero explanation of such things as the > wide assortment of foo_FOR_BUILD env vars and foo_FOR_TARGET that > are needed to get gcc workable on some target machine. Things > such as --sysroot are even more mysterious. You shouldn't need to set any env vars in general. The easy way to handle gmp/mpfr/mpc are to drop the sources into the top level gcc dir, alongside libgcc and libstdc++, and let the gcc makefile build them as gcc libraries. Using a sysroot is the easiest way to build a cross compiler for an existing OS target. A sysroot contains everything the compiler needs, which traditionally means /usr/include, /usr/lib, and /lib, but the exact set of dirs may depend on the OS target. If you have access to the target root file system, then make a copy of these dirs and copy someplace onto the build machine. This is now your sysroot, and can be specified when configuring binutils and gcc. This assumes you have a working target that already has a C library built and installed. If you need to build a C library as part of the toolchain build, and the C library isn't newlib, then yes, I'd say use crosstool-NG as this is complicated. Or at least read the crosstool-NG docs that explain how to do a canadian cross build, as this gets really complicated pretty quickly. When I did a canadian cross build last year to get my first native Fedora RISC-V Ada compiler, I just did this Build the cross toolchain... gamma05:2183$ cat x-binutils.script ../binutils-2.30/configure --target=riscv64-unknown-linux-gnu --prefix=/scratch/jimw/fedora-cross/install --with-sysroot=/scratch/jimw/fedora-cross/sysroot gamma05:2184$ cat x-gcc.script ../gcc-7.3.0/configure --target=riscv64-unknown-linux-gnu --prefix=/scratch/jimw/fedora-cross/install --with-sysroot=/scratch/jimw/fedora-cross/sysroot --disable-multilib --enable-languages=c,ada Put $prefix/bin on my path and build the canadian cross toolchain... gamma05:2185$ cat h-binutils.script ../binutils-2.30/configure --host=riscv64-unknown-linux-gnu --target=riscv64-unknown-linux-gnu --prefix=/scratch/jimw/fedora-cross/h-install --with-sysroot=/scratch/jimw/fedora-cross/sysroot gamma05:2186$ cat h-gcc.script ../gcc-7.3.0/configure --host=riscv64-unknown-linux-gnu --target=riscv64-unknown-linux-gnu --prefix=/scratch/jimw/fedora-cross/h-install --with-sysroot=/scratch/jimw/fedora-cross/sysroot --disable-multilib --enable-languages=c,ada gamma05:2187$ Then copy h-install to the target and use it to build a clean native toolchain. I think you are trying to do a FreeBSD canadian cross build. I primarily have experience doing Linux canadian cross builds. But in theory it should work the same. Jim