我搜索了这个但是我发现的问题是关于让工具链工作,我的问题是它适用于除了几个目录之外的所有目录。我也不是在构建Linux。
我正在尝试将项目从Linux机器移动到Windows以使人们满意。同样的项目在Linux(Ubuntu 12.04)下使用Linux Binary用于相同的工具链(我最近从Mentor的同一目录中重新加载了两个工具链,以确保,请参阅下面的详细信息)。
我安装了Cygwin,得到了包,设置了路径等。一般来说,构建工作90%的项目但是当make遍历目录时,它会找到除两个文件之外的所有内容(澄清一下,这两个是第一个文件在各自的目录中,所以我认为问题将适用于整个目录)。下面的日志显示第一个失败:
更确切地说,例如
找到/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
答案 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问世以来,这已经不再困难了。