I want to compile binaries for a Linux server from the OS X 10.7 + Eclipse build system. This means the cross-compiler GCC. I start with native 4.7.1 and shoot for host 4.7.1.
Most online instructions relate to embedded development. I want to use libstdC ++ - v3 and glibc, which makes it a little different.
What succeeds:
Install packages
port install gcc47 export CC=gcc-mp-47 export LD=ld-mp-47 export CXX=g++-mp-47 export CPP=cpp-mp-47 port install gmake ln /opt/local/bin/gmake /opt/local/bin/make port install gsed ln /opt/local/bin/gsed /opt/local/bin/sed port install gawk port install autoconf port install msgfmt
Make and install binutils-2.22
make all-gcc and make install-gcc
The following configuration is used:
$ .. / gcc / configure --enable-languages = c, C ++, objc, obj-C ++ --with-gmp = / opt / local --with-mpfr = / opt / local - with-mpc = / opt / local --prefix = / usr / local / cross / linux --target = x86_64-pc-linux-gnu -disable-nls
Specify the build environment in the cross compiler
export CC=/usr/local/cross/linux/bin/x86_64-pc-linux-gnu-gcc export LD=/usr/local/cross/linux/bin/x86_64-pc-linux-gnu-ld export AR=/usr/local/cross/linux/bin/x86_64-pc-linux-gnu-ar export CXX=/usr/local/cross/linux/bin/x86_64-pc-linux-gnu-g++ export CPP=/usr/local/cross/linux/bin/x86_64-pc-linux-gnu-cpp
Build glibc-2.16 with config
../glibc/configure --host = x86_64-pc-linux-gnu --build = x86_64-apple-darwin11 --prefix = / usr / local / cross / linux / - with-binutils = / usr / local / cross / linux / bin / - with-headers = / usr / local / cross / linux / include / libc_cv_forced_unwind = yes libc_cv_ctors_header = yes libc_cv_c_cleanup = yes
Error:
glibc build does not work soon. This message appears many times:
In file included from ./sysdeps/unix/sysdep.h:20:0, from ./sysdeps/unix/x86_64/sysdep.h:18, from sysdeps/unix/sysv/linux/x86_64/sysdep.h:22, from <stdin>:1: sysdeps/unix/sysv/linux/sys/syscall.h:24:24: fatal error: asm/unistd.h: No such file or directory compilation terminated.
This may be normal.
Then it does not give stdio_lim.h . With make -d I get the following:
Successfully remade target file `/Users/dkrauss/Documents/work/glibc-build/csu/abi-tag.h'. Considering target file `/Users/dkrauss/Documents/work/glibc-build/bits/stdio_lim.h'. File `/Users/dkrauss/Documents/work/glibc-build/bits/stdio_lim.h' does not exist. Looking for an implicit rule for `/Users/dkrauss/Documents/work/glibc-build/bits/stdio_lim.h'. Trying pattern rule with stem `lim'. Trying implicit prerequisite `/Users/dkrauss/Documents/work/glibc-build/bits/stdio_lim.st'. Found an implicit rule for `/Users/dkrauss/Documents/work/glibc-build/bits/stdio_lim.h'. Considering target file `/Users/dkrauss/Documents/work/glibc-build/bits/stdio_lim.st'. Recently tried and failed to update file `/Users/dkrauss/Documents/work/glibc-build/bits/stdio_lim.st'. make[2]: *** No rule to make target `/Users/dkrauss/Documents/work/glibc-build/bits/stdio_lim.st', needed by `/Users/dkrauss/Documents/work/glibc-build/bits/stdio_lim.h'. Stop.
This is the first heading he is trying to build in bits . There is a stdio_lim.h.in file, which is the only .in file in its directory. Should some rule connect .st to .in ?
source share