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



我已经搜索了这个,但我发现的问题是关于让工具链工作,我的问题是,它适用于所有但几个目录。我也不开发Linux。

我正试图将一个项目从Linux机器转移到Windows,让人们高兴。同样的项目在Linux (Ubuntu 12.04)下可以很好地构建,使用Linux二进制文件的相同工具链(我最近从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

从我运行make的目录中,"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链:arm-none-eabi-gcc;gcc版本4.7.2 (Sourcery CodeBench Lite 2012.09-63)
  • Cygwin: CYGWIN_NT-6.1-WOW64

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

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

我之前评论的细节是,您在使用windows/cygwin组合与Sourcery基于交叉编译器时遇到了很多麻烦。你可以在SamyGo上了解更多。使用Windows的一些问题,在这里有详细的介绍,如下:

  • 使用ACL设置文件权限和所有权(不兼容Linux)
  • 有它自己的方式来创建符号链接(不兼容Linux)
  • 为其固定的NTFS驱动器使用不区分大小写的默认值。(经常悄悄地破坏原来在Linux下压缩的档案)
  • 使用Win32(非POSIX)标准的文件路径(不兼容Linux)
  • 使用两个字符回车和换行符("r" &" n")行尾(EOL)表示,与POSIX相反,POSIX只使用NL。

因此,为了不浪费时间进行第三方调试,您最好从头开始构建自己的交叉编译器,如另一篇文章中的XDA链接所示。自从Android的出现,这就不再困难了。

相关内容

  • 没有找到相关文章

最新更新