搭建powerpc交叉编译工具链

具体实现参考的:
https://www.cnblogs.com/geekard/archive/2012/05/06/powerpc-toolchain.html
问题:

1、Binutils编译报错

config修改为:…/binutils-2.22/configure --prefix= T O O L S − − t a r g e t = TOOLS --target= TOOLStarget=TARGET --disable-werror

2、gmpmpfr make check报错

直接忽略check步骤,直接make和make install就ok

3、自己下载mpc-1.0.3.tar.gz

tar xzvf mpc-1.0.3.tar.gz
cd mpc-1.0.3
./configure
make && make install

4、glibc配置报错

checking LD_LIBRARY_PATH variable… contains current directory
configure: error:
*** LD_LIBRARY_PATH shouldn’t contain the current directory when
*** building glibc. Please change the environment variable
*** and run configure again.
解决方法:
export LD_LIBRARY_PATH=/usr/local/lib

5、交叉编译GCC

config中–enable-languages=cc++ --disable-libgomp写错,应该为–enable-languages=c,c++ --disable-libgomp

6、最后一步交叉编译GCC,make all时提示找不到libc.so.6,报错如下:

/bin/sh …/…/…/gcc-4.6.2/libgcc/…/mkinstalldirs .
/root/ppc/sources/gcc-full-build/./gcc/xgcc -B/root/ppc/sources/gcc-full-build/./gcc/ -B/root/ppc/tools/powerpc-linux/bin/ -B/root/ppc/tools/powerpc-linux/lib/ -isystem /root/ppc/tools/powerpc-linux/include -isystem /root/ppc/tools/powerpc-linux/sys-include -O2 -g -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -fno-stack-protector -shared -nodefaultlibs -Wl,–soname=libgcc_s.so.1 -Wl,–version-script=libgcc.map -o ./libgcc_s.so.1.tmp -g -O2 -B./ _muldi3_s.o _negdi2_s.o _lshrdi3_s.o _ashldi3_s.o _ashrdi3_s.o _cmpdi2_s.o _ucmpdi2_s.o _clear_cache_s.o _enable_execute_stack_s.o _trampoline_s.o __main_s.o _absvsi2_s.o _absvdi2_s.o _addvsi3_s.o _addvdi3_s.o _subvsi3_s.o _subvdi3_s.o _mulvsi3_s.o _mulvdi3_s.o _negvsi2_s.o _negvdi2_s.o _ctors_s.o _ffssi2_s.o _ffsdi2_s.o _clz_s.o _clzsi2_s.o _clzdi2_s.o _ctzsi2_s.o _ctzdi2_s.o _popcount_tab_s.o _popcountsi2_s.o _popcountdi2_s.o _paritysi2_s.o _paritydi2_s.o _powisf2_s.o _powidf2_s.o _powixf2_s.o _powitf2_s.o _mulsc3_s.o _muldc3_s.o _mulxc3_s.o _multc3_s.o _divsc3_s.o _divdc3_s.o _divxc3_s.o _divtc3_s.o _bswapsi2_s.o _bswapdi2_s.o _fixunssfsi_s.o _fixunsdfsi_s.o _fixunsxfsi_s.o _fixsfdi_s.o _fixdfdi_s.o _fixxfdi_s.o _fixtfdi_s.o _fixunssfdi_s.o _fixunsdfdi_s.o _fixunsxfdi_s.o _fixunstfdi_s.o _floatdisf_s.o _floatdidf_s.o _floatdixf_s.o _floatditf_s.o _floatundisf_s.o _floatundidf_s.o _floatundixf_s.o _floatunditf_s.o _divdi3_s.o _moddi3_s.o _udivdi3_s.o _umoddi3_s.o _udiv_w_sdiv_s.o _udivmoddi4_s.o darwin-ldouble_s.o addsf3_s.o divsf3_s.o eqsf2_s.o gesf2_s.o lesf2_s.o mulsf3_s.o negsf2_s.o subsf3_s.o unordsf2_s.o fixsfsi_s.o floatsisf_s.o floatunsisf_s.o adddf3_s.o divdf3_s.o eqdf2_s.o gedf2_s.o ledf2_s.o muldf3_s.o negdf2_s.o subdf3_s.o unorddf2_s.o fixdfsi_s.o floatsidf_s.o floatunsidf_s.o extendsfdf2_s.o truncdfsf2_s.o tramp_s.o unwind-dw2_s.o unwind-dw2-fde-glibc_s.o unwind-sjlj_s.o gthr-gnat_s.o unwind-c_s.o emutls_s.o -lc && rm -f ./libgcc_s.so && if [ -f ./libgcc_s.so.1 ]; then mv -f ./libgcc_s.so.1 ./libgcc_s.so.1.backup; else true; fi && mv ./libgcc_s.so.1.tmp ./libgcc_s.so.1 && (echo “/* GNU ld script”; echo " Use the shared library, but some functions are only in"; echo " the static library. /"; echo “GROUP ( libgcc_s.so.1 libgcc.a )” ) > ./libgcc_s.so
/root/ppc/tools/powerpc-linux/bin/ld: skipping incompatible /lib/libc.so.6 when searching for /lib/libc.so.6
/root/ppc/tools/powerpc-linux/bin/ld: cannot find /lib/libc.so.6
/root/ppc/tools/powerpc-linux/bin/ld: cannot find /lib/libc_nonshared.a
/root/ppc/tools/powerpc-linux/bin/ld: cannot find /lib/ld.so.1
看报错信息分析是找到的libc.so.6不匹配,检查各处makefile,发现确实是指定了ppc版本对应的库目录。
通过修改so解决。
vi libc.so
修改为如下内容
/
GNU ld script
Use the shared library, but some functions are only in
the static library, so try that secondarily. */
OUTPUT_FORMAT(elf32-powerpc)
GROUP ( libc.so.6 libc_nonshared.a AS_NEEDED ( ld.so.1 ) )

还有可能报如下错误:
configure: error: Pthreads are required to build libitm
vi libpthread.so
和libc.so做同样修改

6、编译glibc2.5版本 make报错

ps/wordsize-64 -I…/sysdeps/powerpc/fpu -I…/nptl/sysdeps/powerpc -I…/sysdeps/powerpc -I…/sysdeps/ieee754/dbl-64 -I…/sysdeps/ieee754/flt-32 -I…/sysdeps/ieee754 -I…/sysdeps/generic/elf -I…/sysdeps/generic -I…/nptl -I… -I…/libio -I. -nostdinc -isystem /root/ppc/tools/lib/gcc/powerpc64-linux/4.9.4/include -isystem /root/ppc/tools/powerpc64-linux/usr/include/ -D_LIBC_REENTRANT -include …/include/libc-symbols.h -DHAVE_INITFINI -x c -
-MD -MP -MF /root/ppc/sources/glibc-build/tcb-offsets.h.dT -MT ‘/root/ppc/sources/glibc-build/tcb-offsets.h.d /root/ppc/sources/glibc-build/tcb-offsets.h’
powerpc64-linux-gcc: error: unrecognized command line option ‘-mnew-mnemonics’
make[2]: *** [/root/ppc/sources/glibc-build/tcb-offsets.h] Error 1
make[2]: Leaving directory /root/ppc/sources/glibc-2.5/csu' make[1]: *** [csu/subdir_lib] Error 2 make[1]: Leaving directory/root/ppc/sources/glibc-2.5’
make: *** [all] Error 2
解决方法:
vi …/glibc-2.5/sysdeps/powerpc/Makefile
#machine.
#+cflags += -mnew-mnemonics

7、glibc编译报错

undefined reference to `__stack_chk_guard’
修改glibc-2.23源码中以下两个文件屏蔽掉使用堆栈保护的地方
vi resolv/Makefile
vi nscd/Makefile
#CFLAGS-libresolv += $(stack-protector)
#CFLAGS-nscd += $(stack-protector)
make clean
make

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值