android 做守护进程时用ndk实现,但是打包执行文件时要支持android5.1以上的64位手机时遇到undefined reference to `__system_property_get',打包不成功,最后百度谷歌找到http://www.bubuko.com/infodetail-1014879.html这篇文章看到问题原因和解决方案,原文原因:

下面这一系列的函数在arm64的头文件有定义,但是在libc.so中却找不到实现。 
header: sys/system_properties.h
__system_property_get
__system_property_set
__system_property_find
__system_property_read
__system_property_find_nth
__system_property_foreach
编译64位的arm平台的库的时候报了一个这样的链接错误,__system_property_get是Android NDK提供的一个函数,32位上一直都是ok的,编译64的时候既然会报这个错误,readelf查看64位的libc.so确实找不到这个符号
原文解决办法: 
找到一台arm平台的Android 5.1的设备或虚拟机,把/system/lib64/libc.so取出替换NDK里面的库即可

但是具体解决时还是遇到一点需要注意的问题:你要打64位的so库,那么你的ndk环境得是ndk-r10以上64位的,具体下载地址(http://download.csdn.net/detail/guangzhen87/8500163),然后你要打支持arm64的so就去找一台arm平台的Android 5.1的设备或虚拟机,把/system/lib64/libc.so取出(复制不需要root权限哈,下个es文件浏览器就看得到了)替换ndk目录下面的platforms文件夹里面数字最大的android库的arm64文件夹最里面lib目录下libc.so(比如我的d:\android-ndk-r10d-windows-x86_64\platforms\D:\Tools\android-ndk-r10d-windows-x86_64\platforms\android-21\arch-arm64\usr\lib\libc.so),然后你要支持x86_64,mips64平台,找到对应版本的机子里面libc.so文件做相应的替换编译就ok了!

这是我找到的libc.so的,arm64的哦,不要搞错了http://download.csdn.net/detail/luoyong123456/9418548

更多相关文章

  1. android 应用在SD卡创建应用的文件夹
  2. Android各国语言缩写以及各国语言Values文件夹命名规则
  3. Kotlin Multiplatform - 下一代全平台开发技术
  4. android studio --terminal 命令编译项目(仅限于ubuntu平台)
  5. 高通8x25平台display模块总结
  6. Android SDK Manager在添加Platforms和其他Packages时提示无法在
  7. Android 资源文件夹下的文件不能有大写字符,会导致R.java无法生成
  8. Android系统平台progurad混淆功能使能
  9. 图解MyEclipse 8.5M1中Android开发平台的搭建【下】

随机推荐

  1. 正在学习 android 开发,开发环境已搭建完
  2. 【转】更换android控件默认样式
  3. Android对Linux内核做的改动汇总
  4. android中自定义appWidget
  5. android 创建自己的TabActivity
  6. 只需简单一步,android自带的示例程序 Blue
  7. Android(安卓)MimeType的用途以及所有类
  8. android studio和 Eclipse中代码的注释,让
  9. android中获取屏幕相关信息
  10. 谈谈Android中WIFI 架构和控制流程