问题描述:
使用downloadable kernel module工程编译App.o时, 出现下面错误。经试验发现, 如果把Build_Target中的文件Exlude几个就可以生成App.o. 如果多加一个就会有下面错误出现. 请问这个问题怎么解决?
感觉有一个最大支持的文件个数. 目前这个工程中的的文件个数为506个.
......
s/equip/source/MemProc.o && if [ "0" = "1" ]; then plink "App/NonDebug/App.o";fi
building App/NonDebug/App.o
ccppc.EXE: CreateProcess: No such file or directory
D:\Workbench\vxworks-6.4\host\x86-win32\bin\make.exe: *** [App/NonDebug/App.o] Error 1
Build Failed in Project 'App' (Process Exit Value was 2): 2009-10-21 14:50:13 (Elapsed Time: 00:14)
答复:
出错的原因时链接行超过了windowsXP一行输入的上限。
可以把链接的这一行重定向到一个文件中,然后把文件作为输入。可以按照下面的步骤尝试。
从编译输入看,编译的是一个 Partial Image Linker 工程,在 Properties -> Build Properties -> Build Tools -> Command
有链接脚本,下面是脚本的原始状态:
echo "building $@";%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% %Objects% $(ADDED_OBJECTS) $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi
在这里%Objects%代表了全部.o文件,这条指令在windowsXP中作为一条命令执行,当.o文件太多并且目录比较长的时候,会超过windowsXP对一行输入的限制。做如下修改,然后重新编译,如果是这个原因引起,应该能够解决。
echo "building $@";echo %Objects% > objects.lst;%linkerprefix% $(TOOL_PATH)ccppc -r -nostdlib -Wl,-X %ToolFlags% -o %OutFile% @objects.lst $(ADDED_OBJECTS) $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi
echo %Objects% > objects.lst;将所有的.o放到objects.lst中,@objects.lst 把文件作为输入。作为调试手段,可以查看工程目录下的objects.lst是否生成且内容是否正确。
对于DKM工程的其他子类,例如lib等,都可以用类似的方法。
阅读(5670) | 评论(0) | 转发(1) |