Building Cross Compiler and u-boot
Russell Haley
russ.haley at gmail.com
Sun Mar 15 04:14:59 UTC 2015
Hello I am trying to build the cross compile tools and make u-boot.
Tim Kientzle spoke about two ways of getting cross compilers for
outside of building FreeBDS:
1) make TARGET=arm TARGET_ARCH=armv6 buildenv
after a successful buildworld
2)make xdev XDEV=arm XDEV_ARCH=armv6
I have struggled (and failed) to make either work. I checked out Rui
Paulos uboot fork to /usr/uboot.
1)Using buildenv ->
Jailbird:/usr/src$ make TARGET=arm TARGET_ARCH=armv6 buildenv
Entering world for armv6:arm
# cd ../uboot/
# PATH=$PATH:/usr/local/bin export PATH EDITOR
# gmake SED=gsed HOSTCC=cc CROSS_COMPILE=armv6-freebsd- ccwmx53js_config
gmake[2]: Entering directory '/usr/uboot'
armv6-freebsd-gcc: not found
armv6-freebsd-gcc: not found
usage: dirname string [...]
Generating include/autoconf.mk
armv6-freebsd-gcc: not found
armv6-freebsd-gcc: not found
usage: dirname string [...]
Generating include/autoconf.mk.dep
armv6-freebsd-gcc: not found
armv6-freebsd-gcc: not found
armv6-freebsd-gcc: not found
usage: dirname string [...]
armv6-freebsd-gcc: not found
usage: dirname string [...]
Configuring a wireless module
Configuring for ccwmx53 board...
gmake[2]: Leaving directory '/usr/uboot'
#
2)Using xdev->
Jailbird:/usr/src$ make xdev XDEV=arm XDEV_ARCH=arm
I also failed to "make xdev XDEV=arm XDEV_ARCH=armv6" but didn't
capture text. Here is the last output I have captured:
CC='cc ' mkdep -f .depend -a
-I/usr/src/usr.bin/nm/../../contrib/elftoolchain/libelftc
-I/usr/src/usr.bin/nm/../../contrib/elftoolchain/common -std=gnu99
/usr/src/usr.bin/nm/../../contrib/elftoolchain/nm/nm.c
echo nm: /usr/lib/libc.a /usr/lib/libdwarf.a
/usr/obj/arm.armv6/arm-freebsd/usr/src/lib/libelftc/libelftc.a
/usr/lib/libelf.a >> .depend
cc -O -pipe -mfloat-abi=softfp
-I/usr/src/usr.bin/nm/../../contrib/elftoolchain/libelftc
-I/usr/src/usr.bin/nm/../../contrib/elftoolchain/common -std=gnu99
-Qunused-arguments -c
/usr/src/usr.bin/nm/../../contrib/elftoolchain/nm/nm.c
/usr/src/usr.bin/nm/../../contrib/elftoolchain/nm/nm.c:920:34: error:
unknown type name 'Dwarf_Block'
get_block_value(Dwarf_Debug dbg, Dwarf_Block *block)
^
/usr/src/usr.bin/nm/../../contrib/elftoolchain/nm/nm.c:926:6: warning:
implicit declaration of function 'dwarf_get_elf'
is invalid in C99 [-Wimplicit-function-declaration]
if (dwarf_get_elf(dbg, &elf, &de) != DW_DLV_OK) {
^
/usr/src/usr.bin/nm/../../contrib/elftoolchain/nm/nm.c:927:50: error:
passing 'Dwarf_Error' (aka 'struct _Dwarf_Error')
to parameter of incompatible type 'Dwarf_Error *' (aka 'struct
_Dwarf_Error *'); take the address with &
warnx("dwarf_get_elf failed: %s", dwarf_errmsg(de));
^~
&
/usr/include/libdwarf.h:122:39: note: passing argument to parameter here
const char *dwarf_errmsg(Dwarf_Error *);
^
/usr/src/usr.bin/nm/../../contrib/elftoolchain/nm/nm.c:959:2: error:
use of undeclared identifier 'Dwarf_Block'
Dwarf_Block *block;
^
/usr/src/usr.bin/nm/../../contrib/elftoolchain/nm/nm.c:959:15: error:
use of undeclared identifier 'block'
Dwarf_Block *block;
^
/usr/src/usr.bin/nm/../../contrib/elftoolchain/nm/nm.c:969:46: error:
passing 'Dwarf_Error' (aka 'struct _Dwarf_Error')
to parameter of incompatible type 'Dwarf_Error *' (aka 'struct
_Dwarf_Error *'); take the address with &
warnx("dwarf_tag failed: %s", dwarf_errmsg(de));
^~
&
/usr/include/libdwarf.h:122:39: note: passing argument to parameter here
const char *dwarf_errmsg(Dwarf_Error *);
^
/usr/src/usr.bin/nm/../../contrib/elftoolchain/nm/nm.c:1028:7:
warning: implicit declaration of function
'dwarf_formblock' is invalid in C99 [-Wimplicit-function-declaration]
dwarf_formblock(at, &block, &de) == DW_DLV_OK) {
^
/usr/src/usr.bin/nm/../../contrib/elftoolchain/nm/nm.c:1028:28: error:
use of undeclared identifier 'block'
dwarf_formblock(at, &block, &de) == DW_DLV_OK) {
^
/usr/src/usr.bin/nm/../../contrib/elftoolchain/nm/nm.c:1034:21: error:
use of undeclared identifier 'block'
if (*((uint8_t *)block->bl_data) == DW_OP_addr)
^
/usr/src/usr.bin/nm/../../contrib/elftoolchain/nm/nm.c:1035:38: error:
use of undeclared identifier 'block'
var->addr = get_block_value(dbg, block);
^
/usr/src/usr.bin/nm/../../contrib/elftoolchain/nm/nm.c:1093:13: error:
use of undeclared identifier 'DW_DLV_ERROR'
if (ret == DW_DLV_ERROR)
^
/usr/src/usr.bin/nm/../../contrib/elftoolchain/nm/nm.c:1094:41: error:
passing 'Dwarf_Error'
(aka 'struct _Dwarf_Error') to parameter of incompatible type
'Dwarf_Error *' (aka 'struct _Dwarf_Error *'); take
the address with &
warnx("dwarf_child: %s", dwarf_errmsg(de));
^~
&
/usr/include/libdwarf.h:122:39: note: passing argument to parameter here
const char *dwarf_errmsg(Dwarf_Error *);
^
/usr/src/usr.bin/nm/../../contrib/elftoolchain/nm/nm.c:1101:13: error:
use of undeclared identifier 'DW_DLV_ERROR'
if (ret == DW_DLV_ERROR)
^
/usr/src/usr.bin/nm/../../contrib/elftoolchain/nm/nm.c:1102:45: error:
passing 'Dwarf_Error'
(aka 'struct _Dwarf_Error') to parameter of incompatible type
'Dwarf_Error *' (aka 'struct _Dwarf_Error *'); take
the address with &
warnx("dwarf_siblingof: %s", dwarf_errmsg(de));
^~
&
/usr/include/libdwarf.h:122:39: note: passing argument to parameter here
const char *dwarf_errmsg(Dwarf_Error *);
^
/usr/src/usr.bin/nm/../../contrib/elftoolchain/nm/nm.c:1107:26: error:
use of undeclared identifier 'DW_DLA_DIE'
dwarf_dealloc(dbg, die, DW_DLA_DIE);
^
/usr/src/usr.bin/nm/../../contrib/elftoolchain/nm/nm.c:1282:51: error:
too many arguments to function call, expected 4,
have 6
if (dwarf_elf_init(elf, DW_DLC_READ, NULL, NULL, &dbg, &de) !=
~~~~~~~~~~~~~~ ^~~~~~~~~
/usr/include/libdwarf.h:139:1: note: 'dwarf_elf_init' declared here
int dwarf_elf_init(Elf *, int, Dwarf_Debug *, Dwarf_Error *);
^
/usr/src/usr.bin/nm/../../contrib/elftoolchain/nm/nm.c:1284:51: error:
passing 'Dwarf_Error'
(aka 'struct _Dwarf_Error') to parameter of incompatible type
'Dwarf_Error *' (aka 'struct _Dwarf_Error *'); take
the address with &
warnx("dwarf_elf_init failed: %s", dwarf_errmsg(de));
^~
&
/usr/include/libdwarf.h:122:39: note: passing argument to parameter here
const char *dwarf_errmsg(Dwarf_Error *);
^
/usr/src/usr.bin/nm/../../contrib/elftoolchain/nm/nm.c:1293:23:
warning: incompatible pointer types passing
'Dwarf_Debug' (aka 'struct _Dwarf_Debug *') to parameter of type
'Dwarf_Debug *' (aka 'struct _Dwarf_Debug **');
take the address with & [-Wincompatible-pointer-types]
(void) dwarf_finish(dbg, &de);
^~~
&
/usr/include/libdwarf.h:141:32: note: passing argument to parameter here
int dwarf_finish(Dwarf_Debug *, Dwarf_Error *);
^
/usr/src/usr.bin/nm/../../contrib/elftoolchain/nm/nm.c:1306:22: error:
passing 'Dwarf_Error'
(aka 'struct _Dwarf_Error') to parameter of incompatible type
'Dwarf_Error *' (aka 'struct _Dwarf_Error *'); take
the address with &
dwarf_errmsg(de));
^~
&
/usr/include/libdwarf.h:122:39: note: passing argument to parameter here
const char *dwarf_errmsg(Dwarf_Error *);
^
/usr/src/usr.bin/nm/../../contrib/elftoolchain/nm/nm.c:1319:9:
warning: implicit declaration of function
'dwarf_srcfiles' is invalid in C99 [-Wimplicit-function-declaration]
ret = dwarf_srcfiles(die, &src_files, &filecount, &de);
^
/usr/src/usr.bin/nm/../../contrib/elftoolchain/nm/nm.c:1320:14: error:
use of undeclared identifier 'DW_DLV_ERROR'
if (ret == DW_DLV_ERROR)
^
/usr/src/usr.bin/nm/../../contrib/elftoolchain/nm/nm.c:1321:45: error:
passing 'Dwarf_Error'
(aka 'struct _Dwarf_Error') to parameter of incompatible type
'Dwarf_Error *' (aka 'struct _Dwarf_Error *'); take
the address with &
warnx("dwarf_srclines: %s", dwarf_errmsg(de));
^~
&
/usr/include/libdwarf.h:122:39: note: passing argument to parameter here
const char *dwarf_errmsg(Dwarf_Error *);
^
/usr/src/usr.bin/nm/../../contrib/elftoolchain/nm/nm.c:1329:9:
warning: implicit declaration of function
'dwarf_srclines' is invalid in C99 [-Wimplicit-function-declaration]
ret = dwarf_srclines(die, &lbuf, &lcount, &de);
^
/usr/src/usr.bin/nm/../../contrib/elftoolchain/nm/nm.c:1330:14: error:
use of undeclared identifier 'DW_DLV_ERROR'
if (ret == DW_DLV_ERROR)
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
5 warnings and 20 errors generated.
*** Error code 1
Stop.
make[4]: stopped in /usr/src/usr.bin/nm
*** Error code 1
Stop.
make[3]: stopped in /usr/src
*** Error code 1
Stop.
make[2]: stopped in /usr/src
My attempt to build Rui Paulos u-boot repository:
#gmake SED=gsed HOSTCC=cc CROSS_COMPILE=armv6-freebsd- ccwmx53js_config
armv6-freebsd-gcc: not found
armv6-freebsd-gcc: not found
usage: dirname string [...]
Generating include/autoconf.mk
armv6-freebsd-gcc: not found
armv6-freebsd-gcc: not found
usage: dirname string [...]
Generating include/autoconf.mk.dep
armv6-freebsd-gcc: not found
armv6-freebsd-gcc: not found
armv6-freebsd-gcc: not found
usage: dirname string [...]
armv6-freebsd-gcc: not found
usage: dirname string [...]
for dir in tools examples/standalone examples/api ; do gmake -C $dir
_depend ; done
armv6-freebsd-gcc: not found
usage: dirname string [...]
gmake[1]: Entering directory '/usr/uboot/tools'
gmake[1]: gcc: Command not found
gmake[1]: armv6-freebsd-gcc: Command not found
gmake[1]: Nothing to be done for '_depend'.
gmake[1]: Leaving directory '/usr/uboot/tools'
gmake[1]: Entering directory '/usr/uboot/examples/standalone'
gmake[1]: armv6-freebsd-gcc: Command not found
armv6-freebsd-gcc: not found
usage: dirname string [...]
armv6-freebsd-gcc: not found
usage: dirname string [...]
gmake[1]: Nothing to be done for '_depend'.
gmake[1]: Leaving directory '/usr/uboot/examples/standalone'
gmake[1]: Entering directory '/usr/uboot/examples/api'
gmake[1]: armv6-freebsd-gcc: Command not found
armv6-freebsd-gcc: not found
usage: dirname string [...]
gmake[1]: Nothing to be done for '_depend'.
gmake[1]: Leaving directory '/usr/uboot/examples/api'
gmake -C tools all
armv6-freebsd-gcc: not found
usage: dirname string [...]
gmake[1]: Entering directory '/usr/uboot/tools'
gmake[1]: gcc: Command not found
gmake[1]: armv6-freebsd-gcc: Command not found
gcc -g -Wall -idirafter /usr/uboot/include -idirafter
/usr/uboot/include2 -idirafter /usr/uboot/include -I /usr/uboot/libfdt
-I /usr/uboot/tools -DTEXT_BASE=0x97800000 -DUSE_HOSTCC
-D__KERNEL_STRICT_NAMES -O -c -o mkimage.o /usr/uboot/tools/mkimage.c
gmake[1]: gcc: Command not found
Makefile:218: recipe for target 'mkimage.o' failed
gmake[1]: *** [mkimage.o] Error 127
gmake[1]: Leaving directory '/usr/uboot/tools'
Makefile:402: recipe for target 'tools' failed
gmake: *** [tools] Error 2
Thanks,
Russ
More information about the freebsd-arm
mailing list