openssl_android编译通过遇到问题总结及修改

一、下载openssl源码。

     https://github.com/gitextensions/gitextensions  这个是从android本身扣出来的。


二、、Dl_info' undeclared (first    use in this function)

编译openssl-android 库失败提示如下

[cpp]  view plain copy
  1. Compile thumb  : crypto <= dsa_vrf.c  
  2.    Compile thumb  : crypto <= dso_dl.c  
  3.    Compile thumb  : crypto <= dso_dlfcn.c  
  4.    /Crypto/openssl-android/crypto/dso/dso_dlfcn.c: In function 'dlfcn_pathbyaddr':  
  5.    /Crypto/openssl-android/crypto/dso/dso_dlfcn.c:445: error: 'Dl_info' undeclared (first    use in this function)  
  6.    /Crypto/openssl-android/crypto/dso/dso_dlfcn.c:445: error: (Each undeclared identifier   is reported only once  
  7.    /Crypto/openssl-android/crypto/dso/dso_dlfcn.c:445: error: for each function it appears in.)  
  8.    /Crypto/openssl-android/crypto/dso/dso_dlfcn.c:445: error: expected ';' before 'dli'  
  9.    /Crypto/openssl-android/crypto/dso/dso_dlfcn.c:455: error: 'dli' undeclared (first use in this function)  
  10.    make: *** [obj/local/armeabi/objs/crypto/dso/dso_dlfcn.o] Error 1  

修改 dso_dlfcn.c文件
[cpp]  view plain copy
  1. typedef struct {  
  2. const char *dli_fname;  /* Pathname of shared object that 
  3.                            contains address */  
  4. void       *dli_fbase;  /* Address at which shared object 
  5.                            is loaded */  
  6. const char *dli_sname;  /* Name of nearest symbol with address 
  7.                            lower than addr */  
  8. void       *dli_saddr;  /* Exact address of symbol named 
  9.                            in dli_sname */  
  10. } Dl_info;  
  11. int dladdr(const void *addr, Dl_info *info) { return 0; }  
在之前
[cpp]  view plain copy
  1. #ifdef __linux  
  2. # ifndef _GNU_SOURCE  
  3. #  define _GNU_SOURCE   /* make sure dladdr is declared */  
  4. # endif  
  5. #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
据说一般不要太普遍用,会导致编译变慢,但从实际上观察,并没有慢太多,并且个人认为,作为编译一个不经常改动的库来讲,编译时间稍微长点关系不大。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值