Install pre-requisites for the host:
Code: Select all
sudo apt-get install dh-autoreconf libcurl4-openssl-dev libexpat1-dev gettext libz-dev libssl-dev
Configuring shared libraries:
This is required because the configure script for git is dumb and apparently doesn't expect you to cross compile.
Run the following commands:
Code: Select all
cd /home/wmt/nas-sysroot/lib
sudo ln -s libpthread.so.0 libpthread.so
sudo ln -s librt.so.1 librt.so
Code: Select all
make configure
To configure, run:
Code: Select all
CFLAGS="-I/home/wmt/nas-sysroot/usr/local/include -I/home/wmt/nas-sysroot/usr/local/include/openssl -I/home/wmt/nas-sysroot/usr/local/include/ncurses" CPPFLAGS="-I/home/wmt/nas-sysroot/usr/local/include -I/home/wmt/nas-sysroot/usr/local/include/openssl -I/home/wmt/nas-sysroot/usr/local/include/ncurses -I/home/wmt/nas-sysroot/usr/local/lib/libffi-3.2.1/include/" LDFLAGS="-L/home/wmt/nas-sysroot/usr/local/lib" ./configure --host=arm-unknown-linux-gnueabi --target=arm-unknown-linux-gnueabi --build=x86_64-linux-gnu CC="arm-unknown-linux-gnueabi-gcc --sysroot=/home/wmt/nas-sysroot" CXX="arm-unknown-linux-gnueabi-g++ --sysroot=/home/wmt/nas-sysroot" LD="arm-unknown-linux-gnueabi-ld --sysroot=/home/wmt/nas-sysroot" ac_cv_fread_reads_directories=yes ac_cv_snprintf_returns_bogus=no
Code: Select all
make -j <num_of_cpu_cores>
NOTE:
-----
This fails at the moment, because git doesn't expect to be cross compiled and tries to link against system libraries. I manually ran the failing linker commands to work around this. I will update this post when/if I find a better way of doing this.
Below are the commands I ran, in order:
Code: Select all
arm-unknown-linux-gnueabi-gcc --sysroot=/home/wmt/nas-sysroot -I/home/wmt/nas-sysroot/usr/local/include -I/home/wmt/nas-sysroot/usr/local/include/openssl -I/home/wmt/nas-sysroot/usr/local/include/ncurses -I/home/wmt/nas-sysroot/usr/local/lib/libffi-3.2.1/include/ -I/home/wmt/nas-sysroot/usr/local/include -I/home/wmt/nas-sysroot/usr/local/include/openssl -I/home/wmt/nas-sysroot/usr/local/include/ncurses -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"x86_64\"" -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -I/home/wmt/nas-sysroot/usr/local/lib//include -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"cache.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -pthread -DHAVE_PATHS_H -DHAVE_STRINGS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_MONOTONIC -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DSHELL_PATH='"/bin/sh"' -DPAGER_ENV='"LESS=FRX LV=-c"' -o git-imap-send -L/home/wmt/nas-sysroot/usr/local/lib -L/home/wmt/nas-sysroot/lib imap-send.o http.o common-main.o -lcurl -lssl -lcrypto libgit.a xdiff/lib.a -L/home/wmt/nas-sysroot/usr/local/lib//lib -R/home/wmt/nas-sysroot/usr/local/lib//lib -lz -pthread -lrt
Code: Select all
arm-unknown-linux-gnueabi-gcc --sysroot=/home/wmt/nas-sysroot -I/home/wmt/nas-sysroot/usr/local/include -I/home/wmt/nas-sysroot/usr/local/include/openssl -I/home/wmt/nas-sysroot/usr/local/include/ncurses -I/home/wmt/nas-sysroot/usr/local/lib/libffi-3.2.1/include/ -I/home/wmt/nas-sysroot/usr/local/include -I/home/wmt/nas-sysroot/usr/local/include/openssl -I/home/wmt/nas-sysroot/usr/local/include/ncurses -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"x86_64\"" -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -I/home/wmt/nas-sysroot/usr/local/lib//include -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"cache.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -pthread -DHAVE_PATHS_H -DHAVE_STRINGS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_MONOTONIC -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DSHELL_PATH='"/bin/sh"' -DPAGER_ENV='"LESS=FRX LV=-c"' -o git-http-fetch -L/home/wmt/nas-sysroot/usr/local/lib -L/home/wmt/nas-sysroot/lib http.o http-walker.o http-fetch.o common-main.o -lcurl libgit.a xdiff/lib.a -L/home/wmt/nas-sysroot/usr/local/lib//lib -R/home/wmt/nas-sysroot/usr/local/lib//lib -lz -pthread -lrt
Code: Select all
arm-unknown-linux-gnueabi-gcc --sysroot=/home/wmt/nas-sysroot -I/home/wmt/nas-sysroot/usr/local/include -I/home/wmt/nas-sysroot/usr/local/include/openssl -I/home/wmt/nas-sysroot/usr/local/include/ncurses -I/home/wmt/nas-sysroot/usr/local/lib/libffi-3.2.1/include/ -I/home/wmt/nas-sysroot/usr/local/include -I/home/wmt/nas-sysroot/usr/local/include/openssl -I/home/wmt/nas-sysroot/usr/local/include/ncurses -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"x86_64\"" -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -I/home/wmt/nas-sysroot/usr/local/lib//include -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"cache.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -pthread -DHAVE_PATHS_H -DHAVE_STRINGS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_MONOTONIC -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DSHELL_PATH='"/bin/sh"' -DPAGER_ENV='"LESS=FRX LV=-c"' -o git-remote-http -L/home/wmt/nas-sysroot/usr/local/lib -L/home/wmt/nas-sysroot/lib remote-curl.o http.o http-walker.o common-main.o -lcurl libgit.a xdiff/lib.a -L/home/wmt/nas-sysroot/usr/local/lib//lib -R/home/wmt/nas-sysroot/usr/local/lib//lib -lz -pthread -lrt
-----
The tests do not run when cross-compiling, because they expect GIT to be installed into the system directories.
To install, run:
Code: Select all
sudo PATH="/home/wmt/x-tools/arm-unknown-linux-gnueabi/bin:$PATH" make DESTDIR=/home/wmt/nas-sysroot install