优麒麟技术论坛

 找回密码

移植Bionic解决运行时报错“dlopen failed: cannot locate symbol “__aeabi_memcpy” ...

已有 205 次阅读2018-12-21 12:21 |个人分类:KylOS

最近移植KylOS到某个设备上,该设备有Android 7.0的代码,但是KylOS目前只兼容Android 6.0framework,所以办法是将厂商提供的基于Android 7.0的驱动移植到KylOS上。但是厂商提供的驱动某些部分是二进制so库的形式,只能兼容Android 7.0Bionic,导致运行时报错“dlopen failed: cannot locate symbol “__aeabi_memcpy” referenced by **so”。最简单的解决方案是让厂商协助将驱动编译一个6.0的版本,但是需要多方协调,实为麻烦。因此本人突发奇想,可不可以将AOSP7Bionic移植到6上,来解决动态库的链接问题呢,应该动态库是向下兼容的吧?说干就干,在移植过程中遇到了诸多编译问题,最后都一一解决了,最后驱动在KylOS跑起来了,这也提供了一种KylOS兼容高版本Android的途径,Bionic(高版本)+FrameworkKylOS+SystemKylOS+Vendor(高版本),只要驱动是向下兼容即可。 本文记录移植Bionic过程中的问题和修改。

 

1. Bionic7Android 7下的Bionic)依赖于jemallic, 因此需要将7里面external/jemalloc拷贝过来。

 

2. system/core/libpixelflinger/codeflinger/CodeCache.cpp

line 65:

-#include "../../../../bionic/libc/upstream-dlmalloc/malloc.c" 

+#include "../../../../external/dlmalloc/malloc.c"

 

3. system/core/include/private/android_filesystem_config.h

line 102:

+#define AID_OEM_RESERVED_2_START 5000 

+#define AID_OEM_RESERVED_2_END   5999

 

4. system/core/debuggerd/Android.mk

line 93: 添加依赖库libutls

5. system/core/base/include/android-base/目录下面添加文件test_utils.h,内容参考Android 7同文件。

6. frameworks/av/media/mtp/Mtputils.cpp

line 66:

-outSeconds = mktime_tz(&tm, tm.tm_zone); 

+outSeconds = timegm(&tm); //mktime_tz(&tm, tm.tm_zone);

7. external/strace/ipc.c

line 39:

-#include <sys/shm.h> 

+#include <linux/shm.h>

 

8. bionic/tests依赖的东西太多,因此将该目录下的Android.mk删除,创建一个空的Android.mk, 不编译该目录下的模块。

 

9. bionic/link目录还是采用Android 6的版本,需要修改linker.cpp

line 3400:

 -__libc_init_tls(args); 

 +__libc_init_main_thread(args);

10. bionic中的libc_bionic_src_files_exclude_arm等包含exclude值得指令在Android 6是不会被执行的,也就是可能会包含函数重复的情况,例如memcpy,因此需要在Android.mk中手动剔除,具体可依据编译时的报错做对应的删除。

 

上述列出的修改不够详尽,可依据具体情况做对应修改,但是移植bionic的方法确实可解决驱动不兼容的问题,以及运行时报错“dlopen failed: cannot locate symbol “__aeabi_memcpy” referenced by **so”


路过

雷人

握手

鲜花

鸡蛋

全部作者的其他最新日志

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

小黑屋|手机版|Archiver|Ubuntu Kylin    

GMT+8, 2020-8-7 09:38 , Processed in 0.017115 second(s), 19 queries .

Copyright ©2013-2020 Ubuntu Kylin. All Rights Reserved .

ICP No. 15002470-2 Tianjin

返回顶部