在debian上构建交叉编译器时出错

时间:2011-03-16 11:05:13

标签: ubuntu debian cross-compiling

我想为powerpc交叉编译内核。我试过在x86_64 Ubuntu 10.04和i386 Debian Lenny上做这个,我得到了完全相同的问题。我按照http://wiki.debian.org/BuildingCrossCompilers的说明进行操作,当我尝试通过提供以下命令来构建binutils时:

fakeroot debian/rules binary-cross

我得到了这个结果:

[snip]
make[3]: Entering directory `/home/anthony/cross-toolchain/binutils-2.20.1/builddir-powerpc-linux-gnu/libiberty'
if [ x"-fpic" != x ]; then \
gcc -c -DHAVE_CONFIG_H -g -O2 -Wno-format-security -I. -I../../libiberty/../include -W -Wall -Wwrite-strings -Wc++-compat -Wstrict-prototypes -pedantic -fpic ../../libiberty/regex.c -o pic/regex.o; \
else true; fi
In file included from /usr/include/stdlib.h:320,
from ../../libiberty/regex.c:128:
/usr/include/sys/types.h:100: error: two or more data types in declaration specifiers
make[3]: *** [regex.o] Error 1
[snip] 

(这是因为types.h尝试typedef pid_t,然而,它已经#defined为int。如果我在types.h中通过#undef pid_t来解决这个问题,我在其他地方使用intptr_t会遇到类似的问题,等等。)

1 个答案:

答案 0 :(得分:0)

如果你需要做的只是交叉编译内核,你应该能够做到以下几点:

CROSS_COMPILE=<portion of command before gcc> make ARCH=powerpc menuconfig
make ARCH=powerpc all
#...other for modules, docs, etc.

确保路径中包含交叉编译器。要设置CROSS_COMPILE变量,如果gcc的交叉编译器命令为 ppc_74xx-gcc ,则设置 CROSS_COMPILE = ppc_74xx -

您可以查看此链接以获取更多信息http://wiki.ppckernel.org/w/Cross_compiling_a_64-bit_PowerPC_Linux_Kernel

如果您正在寻找从头开始构建自己的跨工具链,请查看http://trac.cross-lfs.org/此站点向您展示如何从头开始交叉编译Linux,包括构建自己的工具链,内核,用户空间等