您尚未登录。

楼主 #1 2018-03-19 08:38:14

F1F2
会员
注册时间: 2017-09-11
已发帖子: 99
积分: 99

请教arm linux在 windows链接出错问题

QQ20180319083151.jpg

我用 arm-2014.05-29-arm-none-linux-gnueabi-i686-mingw32.tar.bz2  这个工具链,
在windows平台编译arm linux 程序,
一开始文件比较少的时候,链接正常,
后来文件增多了, 链接出错:

arm-none-linux-gnueabi-gcc.exe: error: CreateProcess: No such file or directory.

离线

楼主 #2 2018-03-19 14:00:05

F1F2
会员
注册时间: 2017-09-11
已发帖子: 99
积分: 99

Re: 请教arm linux在 windows链接出错问题

本来初衷是想让别的同事不安装虚拟机,
只能下载windows版本的arm linux工具链编译链接即可,
现在编译是没有问题, 链接出问题了,
看起来链接器还是有bug.

离线

楼主 #3 2018-03-19 14:09:00

F1F2
会员
注册时间: 2017-09-11
已发帖子: 99
积分: 99

Re: 请教arm linux在 windows链接出错问题

stackoverflow.com 有很多提同样问题的同学, 但是都是x86 windows 的gcc, 都说是path的问题,但是我这个肯定不是path问题,因为文件少的时候链接正常。

离线

楼主 #4 2018-03-19 14:16:55

F1F2
会员
注册时间: 2017-09-11
已发帖子: 99
积分: 99

Re: 请教arm linux在 windows链接出错问题

离线

楼主 #5 2018-03-19 14:22:51

F1F2
会员
注册时间: 2017-09-11
已发帖子: 99
积分: 99

Re: 请教arm linux在 windows链接出错问题

编译cocos2dx,使用的3.10版本。前三个月打包apk都正常,昨天发布apk版本的时候忽然报错

[plain] view plain copy
arm-linux-androideabi-g++.exe: error: CreateProcess: No such file or directory 

清理工程后重来依然如此。有人说是ndk和工程目录路径太深。不想移动目录了。网上查了一下,在mk文件添加参数解决

Android.mk
LOCAL_SHORT_COMMANDS := true 

Application.mk
APP_SHORT_COMMANDS := true

找到搜索关键字了。

离线

楼主 #6 2018-03-19 14:42:45

F1F2
会员
注册时间: 2017-09-11
已发帖子: 99
积分: 99

Re: 请教arm linux在 windows链接出错问题

根据上面两个关键字,找到这里
Android.mk文件语法详述

(6). LOCAL_SHORT_COMMANDS := true /flase

       当你的module有很多的源文件,或者依赖很多的静态或动态库。这会强制编译系统使用一个中间的列表文件,并通过@$(listfile) 语法和library archiver 或者 static    linker一起使用。

    这在Windows上是非常有用的,因为它的命令行只接收最大8191个字符,这对于复杂的工程来说太小了。

    这同样也会影响单个源文件的编译,如果将所有的编译器选项放在列表文件里面。

    注意如果设置了‘true’以外的值,都会恢复成默认行为。

    你也可以在Android.mk文件中定义APP_SHORT_COMMANDS来强制使你的工程中的所有modules使用这项功能

    注意:默认我们不推荐启用这个功能,因为它会使得编译变慢。

    该变量可以解决如下编译问题:make: execvp: /home/android-ndk-r9d/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/arm-linux-                      androideabi-g++: Argument list too long

          特别注意:

      APP_SHORT_COMMANDS , LOCAL_SHORT_COMMANDS 可以解决链接时参数太长的问题(生成*.a *.so时中间文件过多)

       然而,编译,生成 libcrypto.so时,

在libcrypto模块中采用LOCAL_SHORT_COMMANDS:=true来指定会导致编译错误
在Application.mk中指定 APP_SHORT_COMMANDS:=true可以顺利编译,链接

离线

楼主 #7 2018-03-19 14:45:59

F1F2
会员
注册时间: 2017-09-11
已发帖子: 99
积分: 99

Re: 请教arm linux在 windows链接出错问题

果然是微软的锅: 命令提示符 (cmd.exe) 的命令行字符串限制

然而Linux并没有这个限制!

离线

楼主 #8 2018-03-19 15:02:37

F1F2
会员
注册时间: 2017-09-11
已发帖子: 99
积分: 99

Re: 请教arm linux在 windows链接出错问题

以为 powershell 支持 8191以上个字符, 然后并没有。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn