新人发帖,求指教。
最近在进行android ndk方面的开发,在编译动态库的过程中出现了一下问题:SharedLibrary : libXXXXX.so
make: execvp: /cygdrive/c/android-ndk-r7b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi-g++: Argument list too long
make: *** [obj/local/armeabi/libXXXXX.so] Error 127在网上看过一些帖子,应该是linux的问题,不过没有好的解决办法。
不知哪位高手有好的解决方案。Note: ndk version:r7b
最近在进行android ndk方面的开发,在编译动态库的过程中出现了一下问题:SharedLibrary : libXXXXX.so
make: execvp: /cygdrive/c/android-ndk-r7b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi-g++: Argument list too long
make: *** [obj/local/armeabi/libXXXXX.so] Error 127在网上看过一些帖子,应该是linux的问题,不过没有好的解决办法。
不知哪位高手有好的解决方案。Note: ndk version:r7b
解决方案 »
- {"request":"/account/verify_credentials.json","error_code":"401","error":"40109:
- android开发实习工资
- 请教:android能否编写可隐藏到后台运行的程序?
- android编译apk
- android 点击对话框以外的区域 对话框关闭
- ubutun创建Android模拟器老是说SD Card removed
- android2.3.3用MediaRecroder录制开始结束都有个提示音能去掉么?
- ListView嵌套ListView问题
- 请问大神们,手机的wlan mac地址正常情况下会变吗
- ProgressDialog被弃用了,怎么替换?
- 有关android中使用第三方jar
- 求移植android的C库(针对main函数写jni函数)
具体来说是CPP的文件过多造成的,这个build大概有100多个CPP文件和300多个C文件,当我减少编译的CPP文件的时候就可以编译成功,但是会缺少很多实现的方法。
http://www.meegozu.com/thread-1818-1-1.html
这个方法我已经尝试过,还是有同样的问题,而且通过通配符这样的编译的耗时很长的。
在网上找到这样一种解决方式,虽然可以用,但是感觉不是最佳的方法。
http://www.stonetrip.com/developer/forum/viewtopic.php?f=43&t=25517
这个办法也是可行的,我测试过,甚至整个工程可以编译出来一个静态库,只有在编译动态库的时候会出现上述的错误。
但是,我需要在编译动态库的时候,加入所有的源文件,因为这个工程只是整体系统的一个中间的模块,他要想上层提供方法,并且正确的链接到他所调用下层的方法。
所以如果按照上面的这个办法,我在编译上层的动态库的时候就会出现链接错误,关键的地方还是在于在链接动态库的时候,怎么指定LOCAL_SRC_FILES。
LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
LOCAL_STATIC_LIBRARIES := static_lib_name(编译好的 .a 文件的名称)
恩,直接调用静态库也是可以的,不过会出现以下问题,在此之前,我先简单的描述下整个系统的框架:
module A,module B,module C.
其中B就是上述无法编译出动态库的工程,A、C分别为B的下层模块和上层模块,也就是 A->B->C 这样一个架构吧。
其中B调用了A的接口,C也会调用A中的接口。
所以我在编译C的动态库的时候,就需要这样去写配置:
LOCAL_STATIC_LIBRARIES := $(PATH)/libA.a
LOCAL_STATIC_LIBRARIES += $(PATH)/libB.a
在编译C的时候没有问题,但是,在C模块中,直接调用A和B接口的实现都可以找到,但是无法找到从B调用A的实现方法,所以在链接动态库的时候会出现错误。
我并没有在application.mk中加入APP_MODULE,这种方法我会试一下,希望可以继续讨论这个问题。
貌似r4b并不支持stl吧,我需要编译的工程用std中的东西还是很多的。
<ndk>\out\apps\<project>\armeabi,这个路径是在ndk文件夹中么,我并没有找到相关类似的路径。
这个路径是需要在application.mk中指定APP_MODULE,才会产生么?如果不写的话直接制定静态库的绝对路径可以么?