use*_*958 27 c++ windows createprocess android-ndk
在Windows平台上使用NDK构建静态库时出现错误:
process_begin: CreateProcess( "PATH"\android-ndk-r8b\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ar.exe, "some other commands" ) failed.
make (e=87): The parameter is incorrect.
make: *** [obj/local/armeabi-v7a/staticlib.a] Error 87
make: *** Waiting for unfinished jobs....
Run Code Online (Sandbox Code Playgroud)
所有源文件都已成功构建,并且在撰写目标文件时会发生此错误.
在Ubuntu中构建此项目时,我不会收到此错误,它只发生在Windows上.
我想我发现了这个问题:CreateProcess Win API函数的第二个参数lpCommandLine的最大长度为32,768个字符.但在我的情况下,它超过32,768个字符.
我怎么能解决这个问题?
mbr*_*non 30
也许LOCAL_SHORT_COMMANDS在你的Android.mk中设置的标志可以帮助你.它旨在克服Windows命令可以处理的字符数限制.
根据$(NDK文件夹)/docs/ANDROID-MK.html:
LOCAL_SHORT_COMMANDS
当模块具有非常多的源和/或依赖的静态或共享库时,将此变量设置为"true".这会强制构建系统使用中间列表文件,并将其与库归档程序或带有@ $(listfile)语法的静态链接程序一起使用.
这在Windows上很有用,其中命令行最多只接受8191个字符,这对于复杂项目来说可能太小.
这也会影响单个源文件的编译,几乎所有编译器标志都放在列表文件中.
请注意,除"true"之外的任何其他值都将恢复为默认行为.您还可以在Application.mk中定义APP_SHORT_COMMANDS,以强制项目中所有模块的此行为.
注意:我们不建议默认启用此功能,因为它会使构建变慢.
希望这可以帮助!
Hos*_*ari 16
特别感谢@mbrenon!
请记住如下设置LOCAL_SHORT_COMMANDS(Android.mk)和APP_SHORT_COMMANDS(Application.mk).
LOCAL_SHORT_COMMANDS := true
APP_SHORT_COMMANDS := true
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助 !:)
| 归档时间: |
|
| 查看次数: |
13003 次 |
| 最近记录: |