Hello Roman,
On Wed, Oct 23, 2019 at 14:52:01 CEST, Roman Iten wrote:
I use base-linux on an arm_v7a target. This works well except for lx_hubrid components (for example linux_nic_drv).
On several places the toolchain, includes and libraries of the host are used (see repos/base-linux/lib/import/import-lx_hybrid.mk).
Do you see a way how I can cross-compile on a Linux x86_64 host for a Linux arm_v7a target?
My impulsive reaction to this question is plain: No, I can't imagine this to work!
But, this is just the result of a long rocky path of adaptions that ended in a collection of heuristics in import-lx_hybrid.mk and other places of the build system (and base-linux sources). So theoretically, it may work like [1] hints and from the top of my head needs work at the following places.
- For compilation, our code base depends on genode-arm-gcc being used, but the heuristics in import-lx_hybrid.mk must be adapted to fit the cross-compilation environment (e.g., include paths for headers in HOST_INC_DIR). - Currently we link with 'c++'. This definitely should be your-arm-c++. - The cross-compilation environment must include all needed headers, linker scripts, libraries, and tools for the cross target. - repos/base-linux/src/lib/lx_hybrid (resp. repos/base-linux/lib/mk/lx_hybrid.mk) may need ARM-specific adaptions. - general Linux wizardry including the implications of the following (for Ubuntu)
apt depends gcc-7-arm-linux-gnueabihf
... Suggests: libgcc1-dbg-armhf-cross
apt show libc6-dev-armhf-cross
... Contains the symlinks, headers, and object files needed to compile and link programs which use the standard C library.
[1] https://www.96boards.org/documentation/guides/crosscompile/commandline.html
Unfortunately, I can't help further in this regard.
Greets