Build on Alpine Linux
Nick
nospam@codesniffer.com
Sat Oct 8 04:49:00 GMT 2016
Any insight into building GCC on Alpine Linux? I see it uses musl
instead of glibc, not sure if that matters.
I've built GCC on various distros (RH, CentOS, Fedora, Ubuntu, Gentoo)
without issue. Using the same steps on Alpine does not work for me.
Here's what I tried:
First I installed the following in Alpine Linux:
apk add build-base gcc g++ abuild binutils binutils-doc gcc-doc make
coreutils
Then these steps:
- tar xjf gcc-4.9.3.tar.bz2
- mkdir "build"
- cd "build"
- /home/build/gcc/gcc-4.9.3/configure
--prefix=/home/build/build_toolchain --enable-threads=posix --enable-tls
--enable-languages=c,c++ --disable-multilib
- make
This is what I get:
<snip>
make[4]: Leaving directory
'/home/build/gcc/build/x86_64-unknown-linux-gnu/libgcc'
make[3]: Leaving directory
'/home/build/gcc/build/x86_64-unknown-linux-gnu/libgcc'
mkdir -p -- x86_64-unknown-linux-gnu/libgomp
Checking multilib configuration for libgomp...
Configuring stage 1 in x86_64-unknown-linux-gnu/libgomp
configure: creating cache ./config.cache
checking for --enable-version-specific-runtime-libs... no
checking for --enable-generated-files-in-srcdir... no
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... awk
checking whether make sets $(MAKE)... yes
checking for
x86_64-unknown-linux-gnu-gcc... /home/build/gcc/build/./gcc/xgcc
-B/home/build/gcc/build/./gcc/
-B/home/build/build_toolchain/x86_64-unknown-linux-gnu/bin/
-B/home/build/build_toolchain/x86_64-unknown-linux-gnu/lib/
-isystem /home/build/build_toolchain/x86_64-unknown-linux-gnu/include
-isystem /home/build/build_toolchain/x86_64-unknown-linux-gnu/sys-include
checking for C compiler default output file name... a.out
checking whether the C compiler works... configure: error: in
`/home/build/gcc/build/x86_64-unknown-linux-gnu/libgomp':
configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details.
Makefile:21021: recipe for target 'configure-stage1-target-libgomp'
failed
make[2]: *** [configure-stage1-target-libgomp] Error 1
</snip>
I looked in the files
in /home/build/gcc/build/x86_64-unknown-linux-gnu/libgomp but didn't
find any more clues.
I tried to get the make system to output the contents of the test file
(conftest.c) but could only get it for the top-level directory, not
libgomp.
So I created a tiny program and tested the command above:
alpine:~/gcc/build$ cat test.c
#include <stdio.h>
int main()
{
printf("Hello, world\n");
return 0;
}
alpineb1:~/gcc/build$ /home/build/gcc/build/./gcc/xgcc -B/home/bui
ld/gcc/build/./gcc/ -B/home/build/build_toolchain/x86_64-unknown-l
inux-gnu/bin/
-B/home/build/build_toolchain/x86_64-unknown-linux-gnu/lib/
-isystem /home/b
uild/build_toolchain/x86_64-unknown-linux-gnu/include
-isystem /home/build/wc/nucleuz/dev/
3rdParty/build_toolchain/x86_64-unknown-linux-gnu/sys-include ./test.c
alpineb1:~/gcc/build$ ./a.out
-ash: ./a.out: not found
alpineb1:~/gcc/build$ file ./a.out
./a.out: ELF 64-bit LSB executable, x86-64, version 1 (SYSV),
dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, not
stripped
alpineb1:~/gcc/build$ ldd ./a.out
ldd: ./a.out: Not a valid dynamic program
So it seems to me that there's some type of incompatibility (or maybe a
low-level missing dependency?) with the binary that's produced.
Any suggestions are appreciated.
More information about the Gcc-help
mailing list