Cross-compiling for ARM with Autoconf

arm 32-bit cross compiler
cross compilation steps
g++ cross compile
automake cross compile for windows
cross compilation for raspberry pi
cross compile python 3 for arm
configure error missing argument to host alias
c compiler cannot create executables

I am having trouble cross-compiling a library for my arm board using autconf.

I am using this line:

./configure --target=arm-linux --host=arm-linux --prefix=/bla/bla/bla/linux_arm_tool CFLAGS='-m32'
make
make install

When I do file to check it I get:

libjpeg.so.8.4.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped

That doesn't seem right at all, but I tried using it anyway... and I get:

/usr/lib/gcc/arm-linux-gnueabi/4.5.3/../../../../arm-linux-gnueabi/bin/ld: skipping incompatible /bla/bla/bla/bla/../linux_arm_tool/lib/libjpeg.so when searching for -ljpeg

I'm at a loss, I've been googling for an hour now...


So I knew I've cross compiled before using really basic method calls and I figured out why I've gotten away with this before after examining the output:

checking for arm-linux-gnueabi-gcc... no
checking for gcc... gcc
...
...
checking for arm-linux-gnueabi-gcc... gcc

In my /usr/bin there was no arm-linux-gnueabi-gcc, I had to:

ln -s /usr/bin/arm-linux-gnueabi-gcc-4.5 /usr/bin/arm-linux-gnueabi-gcc

I successfully cross-compiled using:

./configure --host=arm-linux-gnueabi -prefix=${CSTOOL_DIR}/linux_arm_tool

as for linking ... I still have to check some things, but I am going to assume I might need to throw some -rpath-link flags in more advanced compiles.

To cross-compile is to build on one platform a binary that will run on another platform. When speaking of cross-compilation, it is important to distinguish between  cross compiling with autoconf. Ask Question Asked 3 years ago. Possible duplicate of Cross-compiling for ARM with Autoconf. – jww Oct 8 '18 at 12:25.


the relationship between the build, host, and target architecture types,; the command line interface for specifying them to configure ,; the variables defined in​  5.1. Paths Handling. When cross-compiling packages with multiple dependencies or entire operating system images, the focus is usually around one specific directory, called sysroot, used as prefix while mimicking the installation layout of a normal running system. This path needs to be prefixed to the paths added to the list of searched paths for headers and libraries, i.e., those that are passed to -I/-L, respectively to the compiler and link editor.


You need to override the environment variables CC, LD, and other pertinent ones. Setting those switches doesn't tell configure where your cross tool chain is (it could be anywhere)

Check out some guides for various projects, for instance: http://wiki.wxwidgets.org/Cross-Compiling_Under_Linux

Also, here is a script I made to setup cross compile for node.js - same idea: https://gist.github.com/edhemphill/5094239

The libjpeg is not going to work b/c it's a x86 binary, you need it to say:

 ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, not stripped

or similar.

This is the reason you are getting a skipping incompatible

I'm trying compile for ARM using: autoreconf -i automake autoconf ./configure --​prefix=${ROOTDIR}/build --target=arm-unknown-linux-gnueabi  I'm trying compile for ARM using: autoreconf -i automake autoconf ./configure --prefix=${ROOTDIR}/build --target=arm-unknown-linux-gnueabi --host=arm-unknown-linux


# Install arm-linux-gnueabi packages
apt-get install libc6-armel-cross libc6-dev-armel-cross \
binutils-arm-linux-gnueabi arm-linux-gnueabi-gcc libncurses5-dev

./configure --target=arm-linux-gnueabi --host=arm-linux-gnueabi
...
checking for arm-linux-gnueabi-gcc... arm-linux-gnueabi-gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... yes
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether arm-linux-gnueabi-gcc accepts -g... yes
checking for arm-linux-gnueabi-gcc option to accept ISO C89... none needed
checking whether arm-linux-gnueabi-gcc understands -c and -o together... yes
checking whether make supports the include directive... yes (GNU style)
checking dependency style of arm-linux-gnueabi-gcc... gcc3
...

make
arm-linux-gnueabi-gcc -DPACKAGE_NAME=\"Tutorial\ Program\" -DPACKAGE_TARNAME=\"tutorial-program\" -DPACKAGE_VERSION=\"1.0\" -DPACKAGE_STRING=\"Tutorial\ Program\ 1.0\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"tutorial-program\" -DVERSION=\"1.0\" -I.     -g -O2 -MT main.o -MD -MP -MF .deps/main.Tpo -c -o main.o main.c

In this blog post I will explain how to cross compile most autotools We will use the arm-linux-gnueabihf cross compiler which is at the time of Cross compiling static C hello world for Android using arm-linux-gnueabi-gcc I want to build a static hello world from C using arm-linux-gnueabi-gcc as opposed to using the NDK standalone toolchain or Codesourcery for that matter.


Cross Compile files on x86 Linux host for 96Boards ARM systems. sudo apt-​get install build-essential autoconf libtool cmake pkg-config git python-dev  In Autoconf 2.13 and before, the variables build, host, and target had a different semantics before and after the invocation of AC_CANONICAL_BUILD etc. Now, the argument of --build is strictly copied into build_alias, and is left empty otherwise. After the AC_CANONICAL_BUILD, build is set to the canonicalized build type.


In arm-linux/bin/, we'll find cross compilation tools (links to the gcc stuff), i.e. that The official way to do that (since autoconf 2.5) is to provide build arch and host  Stack Overflow for Teams is a private, secure spot for you and your coworkers to find and share information. Learn more Problems in cross compiling glib with autoconf


Corresponds to the --build, --host and --target autoconf configure script arguments armeb-linux-uclibcgnueabi, Linux toolchain targeting the ARM big-​endian. Cross-Compilation (automake) Next: Renaming, Previous: Two-Part Install, Up: Use Cases [Contents][Index] 2.2.8 Cross-Compilation. To cross-compileis to build on one platform a binary that willrun on another platform. When speaking of cross-compilation, it isimportant to distinguish between the build platformon whichthe compilation is performed, and the host platformon which theresulting executable is expected to run.