日期:2014-05-16  浏览次数:20553 次

唉! 一样的shell, 在shell下执行没有问题,但在makefile里就是不行,请 大侠指教!
就是字符处理.


LINK_COMMAND = c:/ADSv1_2\bin\armlink -info sizes,unused -list _arm9e_armds12b842/b1000_haier.map -scatter dynamicmap.cmd -keep
 a_ProcessNames -symbols -symdefs vyp1034.sym -entry ExceptionVectors -o _arm9e_armds12b842/b1000_haier.x j:/psm
aster/modules/master/srce/_arm9e_armds12b842/master.ptl j:/psflash/modules/eeprom/srce/_arm9e_armds12b842/eeprom
.ptl j:/psstartup/modules/init/srce/_arm9e_armds12b842/init.ptl j:/fctserv/modules/chainlist/srce/_arm9e_armds12
b842/chainlist.ptl j:/hardwl/modules/hwlcsl/srce/_arm9e_armds12b842/hwlcsl.ptl 


shell:
  ${LINK_COMMAND%ExceptionVectors*}
处理正常:

makefile:
  @echo ${LINK_COMMAND%ExceptionVectors*}
结果是什么都没有.


为什么同样的shell,在makefile里就执行的结果不对呢?



------解决方案--------------------
${}应该是unix平台下用的吧
你的makefile中又有c:这样的字符
你的环境是什么?操作系统,make的版本报出来给大家看看
------解决方案--------------------
一种勉强可用但是很丑陋的方式:

在Makefile中的export LINK_COMMAND后加入:

SUBCMD=`echo $${LINK_COMMAND%ExceptionVectors*}` -via LinkOpt.TMP

(不知道为什么用$(shell ...)不行)

不过建议如果可以的话还是重新整理下你的Makefile好了,如果文件很多的话建议分几个层次好了,子层次中先生成object文件并合成少数的几个object文件,在最上层的Makefile只是处理集合成的object文件。