在windows环境下用Sourcery CodeBench编译基于(4)

2020-03-27 06:12

在Target name 中添加 distclean 点击OK,再用同样的办法添加am335x_evm_config。

制作这两个选项是为make distclean 和make am335x_evm_config做准备的。由于做移植工作需要反复编译u-boot,在编译u-boot的过程中会产生一些中间文件和链接文件,当修改完u-boot再次编译时,它可能会调用原来的中间文件和链接文件,这样编译就会出错,这时就需要用到make distclean。make distclean是用来清除之前编译u-boot产生的多余的中间文件和链接文件,能保证再次编译不受上一次干扰。make am335x_evm_config则是用来配置板子的相应信息。

3.4修改Makefile和mkconfig

由于Makefile和mkcong中有些命令在现有的环境中还无法使用,比如ln -s链接命令。Windows下的快捷方式虽然与linux下的链接文件比较相似,但实现机制并不相同,如果通过修改makefile来取代链接文件直接指向原文件的位置,那工作量可想而知。此时,我们需要一个工具junction。junction是 由Sysinternals 出品的一个免费的命令行工具,它可以创建和删除符号链接。这样我们修改makefile的工作量将大大减少。

下载Junction:http://technet.microsoft.com/en-us/sysinternals/bb896768

将junction.exe拷贝到D:\\MinGW\\msys\\1.0\\bin下,然后双击它。

打开u-boot根目录下的Makefile,在文件末尾找到clobber clean 处,修改如下:

clobber: clean @find $(OBJTREE) -type f \\( -name '*.depend' \\ -o -name '*.srec' -o -name '*.bin' -o -name u-boot.img \\) \\ -print0 \\ | xargs -0 rm -f @rm -f $(OBJS) $(obj)*.bak $(obj)ctags $(obj)etags $(obj)TAGS \\ $(obj)cscope.* $(obj)*.*~ @rm -f $(obj)u-boot $(obj)u-boot.map $(obj)u-boot.hex $(ALL-y) @rm -f $(obj)u-boot.kwb @rm -f $(obj)u-boot.imx @rm -f $(obj)u-boot.ubl @rm -f $(obj)arch/powerpc/cpu/mpc824x/bedbug_603e.c # @rm -fr $(obj)include/asm/proc $(obj)include/asm/arch $(obj)include/asm @rm -fr $(obj)include/generated #new: add delete junction to this place echo \ @[ ! -d $(obj)include/asm ] || junction -d $(obj)include/asm @[ ! -d $(obj)nand_spl ] || find $(obj)nand_spl -name \ @[ ! -d $(obj)onenand_ipl ] || find $(obj)onenand_ipl -name \ rm -f @[ ! -d $(obj)mmc_spl ] || find $(obj)mmc_spl -name \

注:红色字体为要添加的部分。

打开u-boot根目录下的mkconfig,找到注释# Create link to architecture specific headers处,修改如下(左边为修改前,右边为修改后):

# Create link to architecture specific headers # if [ \ mkdir -p ${OBJTREE}/include mkdir -p ${OBJTREE}/include2 cd ${OBJTREE}/include2 rm -f asm ln -s ${SRCTREE}/arch/${arch}/include/asm asm LNPREFIX=${SRCTREE}/arch/${arch}/include/asm / cd ../include mkdir -p asm else cd ./include rm -f asm ln -s ../arch/${arch}/include/asm asm fi rm -f asm/arch if [ -z \ ln -s ${LNPREFIX}arch-${cpu} asm/arch else ln -s ${LNPREFIX}arch-${soc} asm/arch fi if [ \ rm -f asm/proc ln -s ${LNPREFIX}proc-armv asm/proc fi

# Create link to architecture specific headers # if [ \ mkdir -p ${OBJTREE}/include mkdir -p ${OBJTREE}/include2 cd ${OBJTREE}/include2 rm -f asm ln -s ${SRCTREE}/arch/${arch}/include/asm asm LNPREFIX=${SRCTREE}/arch/${arch}/include/asm/ cd ../include mkdir -p asm else cd ./include # rm -f asm # ln -s ../arch/${arch}/include/asm asm if [ -d asm ] ; then echo \ junction -d asm fi echo \ junction asm ../arch/${arch}/include/asm fi #new:add rm -r to delete a directory rm -fr asm/arch if [ -z \ ln -s ${LNPREFIX}arch-${cpu} asm/arch else ln -s ${LNPREFIX}arch-${soc} asm/arch fi if [ \#new:add rm -r to delete a directory rm -fr asm/proc ln -s ${LNPREFIX}proc-armv asm/proc fi 注:红色字体为要添加的部分。

3.5编译u-boot

因为编译u-boot时会默认调用D:\\MinGW\\bin中的strip.exe,而我们需要调用的是Sourcery CodeBench中的arm-none-linux-gnueabi-strip.exe。那么我们只需要做简单地替换就行了,做法:将D:\\Sourcery_CodeBench_Lite_for_ARM_EABI\\bin中的arm-none-linux-gnueabi-strip.exe拷贝到D:\\MinGW\\bin中改名为strip.exe替换掉原来D:\\MinGW\\bin下的strip.exe。

在Project下的Make Target->Build中,选择distclean,点击build:

如果编译提示没有/tmp目录,那么可以用D:\\MinGW\\msys\\1.0下的msys.bat新建一个: 双击msys.bat,键入: Mkdir /tmp

Chmod a+rwx /tmp


在windows环境下用Sourcery CodeBench编译基于(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:装配体有限元分析

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: