解决jni项目编译生成so时报错"argument list too long"

来源:互联网 发布:网络电视播放器排行 编辑:程序博客网 时间:2024/05/16 06:15

最近接手的一个jni项目是一个原先在iOS平台上的项目,在mac机器上用eclipse时生成apk非常的顺利,到了windows下编译时却总是在生成so时出现"argument list too long"的报错,网上寻求若干资料后终于解决了这个问题,方法很简单:

在jni的android.mk文件里 前面加上一句"LOCAL_SHORT_COMMANDS := true"即可。


关于LOCAL_SHORT_COMMANDS 参数的解释:


设置这个变量为‘true’,当你的module有很多的源文件,或者依赖很多的静态或动态库。这会强制编译系统使用一个中间的列表文件,并通过@$(listfile) 语法和library archiver 或者 static linker一起使用。
这在Windows上是非常有用的,因为它的命令行只接收最大8191个字符,这对于复杂的工程来说太小了。

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

注意如果设置了‘true’以外的值,都会恢复成默认行为。你也可以在Android.mk文件中定义APP_SHORT_COMMANDS来强制使你的工程中的所有modules使用这项功能。
注意:默认我们不推荐启用这个功能,因为它会使得编译变慢。
参考文章:NDK官方开发指南翻译之 Android.mk
http://ikinglai.blog.51cto.com/6220785/1215819
0 0