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

最近接手的一个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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值