Win7 / cygwin下的Codesourcery工具链找不到一些文件

时间:2013-04-23 15:10:02

标签: cygwin codesourcery

我搜索了这个但是我发现的问题是关于让工具链工作,我的问题是它适用于除了几个目录之外的所有目录。我也不是在构建Linux。

我正在尝试将项目从Linux机器移动到Windows以使人们满意。同样的项目在Linux(Ubuntu 12.04)下使用Linux Binary用于相同的工具链(我最近从Mentor的同一目录中重新加载了两个工具链,以确保,请参阅下面的详细信息)。

我安装了Cygwin,得到了包,设置了路径等。一般来说,构建工作90%的项目但是当make遍历目录时,它会找到除两个文件之外的所有内容(澄清一下,这两个是第一个文件在各自的目录中,所以我认为问题将适用于整个目录)。下面的日志显示第一个失败:

  • 如果我将lwip从构建中取出,那么它会在下一个构建中爆炸
  • 如果我从构建中取出下一个,那么其他所有(相当多)编译;然后链接器按预期在两个缺少的项目上失败。

更确切地说,例如

找到/home/Nadi/project/version-2.9/external/freertos/Source/portable/GCC/ARM_CM3_MPU/port.c

但不是/home/Nadi/project/version-2.9/external/lwip/src/api/api_lib.c

从我正在运行的目录中,“ls”找到编译器无法访问的文件。

日志:

$ make
external/freertos 
external/lwip  
 [cc] Debug/api_lib.o 
arm-none-eabi-gcc.exe: error: /home/Nadi/project/version-2.9/external/lwip/src/api/api_lib.c: No such file or directory 
arm-none-eabi-gcc.exe: fatal error: no input files compilation terminated. 
Makefile:189: recipe for target `Debug/api_lib.o' failed 
make[2]: *** [Debug/api_lib.o] Error 1 
Makefile:37: recipe for target `lwip_world' failed 
make[1]: *** [lwip_world] Error 2 
Makefile:160: recipe for target `extern' failed 
make: *** [extern] Error 2

详细说明:

  • GCC Chain:arm-none-eabi-gcc; gcc版本4.7.2(Sourcery CodeBench Lite 2012.09-63)
  • Cygwin:CYGWIN_NT-6.1-WOW64

2 个答案:

答案 0 :(得分:1)

虽然在这种特殊情况下可能没什么帮助,但我遇到类似的问题,CodeSourcery的gcc根本没有识别Cygwin的路径,如/cygdrive/d/foo.c - 安装cygpath包和设置环境变量export CYGPATH=c:/cygwin32/bin/cygpath(或{{在Windows控制台中解决了所有问题。

确保以与上述完全相同的方式定义cygpath可执行文件的路径,无论使用Cygwin或Windows控制台。

答案 1 :(得分:0)

我之前评论的细节是,使用基于 Sourcery 的交叉编译器的windows / cygwin组合会遇到很多麻烦。您可以在SamyGo了解详情。使用Windows的一些问题,包括在那里的所有血腥细节,是:

  
      
  • 使用ACL设置文件权限和所有权(不兼容Linux。)
  •   
  • 是否有自己创建符号链接的方式(不兼容Linux。)
  •   
  • 对其固定的NTFS驱动器使用不区分大小写的默认值。   (通常并默默地打破最初在Linux下压缩的档案。)
  •   
  • 对文件路径使用Win32(非POSIX)标准(不兼容Linux。)
  •   
  • 使用2个字符Carriage-Return和New-Line(“\ r”&“\ n”)表示   行程终止(EOL)表示,与POSIX相反,后者仅使用NL。
  •   

因此,为了不浪费时间进行第三方调试,您最好从头开始构建自己的交叉编译器,如其他帖子中的XDA链接所示。自Android问世以来,这已经不再困难了。