一、下载openssl源码。
https://github.com/gitextensions/gitextensions 这个是从android本身扣出来的。
二、、Dl_info' undeclared (first use in this function)
编译openssl-android 库失败提示如下
- Compile thumb : crypto <= dsa_vrf.c
- Compile thumb : crypto <= dso_dl.c
- Compile thumb : crypto <= dso_dlfcn.c
- /Crypto/openssl-android/crypto/dso/dso_dlfcn.c: In function 'dlfcn_pathbyaddr':
- /Crypto/openssl-android/crypto/dso/dso_dlfcn.c:445: error: 'Dl_info' undeclared (first use in this function)
- /Crypto/openssl-android/crypto/dso/dso_dlfcn.c:445: error: (Each undeclared identifier is reported only once
- /Crypto/openssl-android/crypto/dso/dso_dlfcn.c:445: error: for each function it appears in.)
- /Crypto/openssl-android/crypto/dso/dso_dlfcn.c:445: error: expected ';' before 'dli'
- /Crypto/openssl-android/crypto/dso/dso_dlfcn.c:455: error: 'dli' undeclared (first use in this function)
- make: *** [obj/local/armeabi/objs/crypto/dso/dso_dlfcn.o] Error 1
修改 dso_dlfcn.c文件
- typedef struct {
- const char *dli_fname; /* Pathname of shared object that
- contains address */
- void *dli_fbase; /* Address at which shared object
- is loaded */
- const char *dli_sname; /* Name of nearest symbol with address
- lower than addr */
- void *dli_saddr; /* Exact address of symbol named
- in dli_sname */
- } Dl_info;
- int dladdr(const void *addr, Dl_info *info) { return 0; }
- #ifdef __linux
- # ifndef _GNU_SOURCE
- # define _GNU_SOURCE /* make sure dladdr is declared */
- # endif
- #endif
二、
process_begin: CreateProcess(...) make (e=87): 参数错误
解决:
process_begin: CreateProcess(... ...)make (e=87): 参数错误。
原因是.MK文件中包含的文件太多了,而windows对于函数参数个数有限制,解决的方法有两个:
1,将当前mk文件中的c或c++文件分离到另外一个mk文件中,即是将单独的irrlicht库分成两个工程编译,通过链接so库文件最终生成最后需要的so动态库;
2,这一种方法比较简单:
在Android.mk文件中添加:LOCAL_SHORT_COMMANDS := true
在Application.mk文件中添加:APP_SHORT_COMMANDS
:= true
第二种方法是从一个老外的论坛查到:http://stackoverflow.com/questions/12598933/ndk-build-createprocess-make-e-87-the-parameter-is-incorrect
据说一般不要太普遍用,会导致编译变慢,但从实际上观察,并没有慢太多,并且个人认为,作为编译一个不经常改动的库来讲,编译时间稍微长点关系不大。