3
votes

Recently, I've tried to build busybox for MIPS architecture, following steps provided in "Pro Linux Embbeded Systems" book. Beforehand, I've sucessfully installed and configured crosstool-ng for working with MIPS.

At busybox, I've setted CROSS_COMPILER prefix for one present in x-tools directory (generated from crosstool-ng).

However, when make command is run, the following message occurs:

applets/applets.c:1:0: warning: cannot use small-data accesses for '-mabicalls'
 /* vi: set sw=4 ts=4: */
 ^
In file included from include/libbb.h:13:0,
                 from include/busybox.h:10,
                 from applets/applets.c:11:
include/platform.h:120:23: fatal error: byteswap.h: No such file or directory
 # include <byteswap.h>
                       ^
compilation terminated.
make[1]: *** [applets/applets.o] Error 1
make: *** [applets] Error 2

In this sense, I ask: How do I fix this problem of missing header? Do I have to copy from /usr/include, or pull it from glibc source code, or something like that?

1

1 Answers

0
votes

Your cross compiler should have come with MIPS versions of the header files. There should be include and usr/include directories containing files like the MIPS version of byteswap.h. You might need to specify the --sysroot argument for gcc to tell it where the target header files are located.

Do not copy headers from the host system, that will result in subtle errors.