作者小头像 Lv.2
79 成长值

个人介绍

这个人很懒,什么都没有留下

感兴趣或擅长的领域

暂无数据
个人勋章
TA还没获得勋章~
成长雷达
30
9
25
15
0

个人资料

个人介绍

这个人很懒,什么都没有留下

感兴趣或擅长的领域

暂无数据

达成规则

他的回复:
优化版so打包过程1、准备Gnu官网下载2.31版本glibc   http://ftp.jaist.ac.jp/pub/GNU/libc/Gnu官网下载2.29版本glibc   http://ftp.jaist.ac.jp/pub/GNU/libc/2、文件抽离新建一个目录,以final_package命名在2.31版本glibc将以下文件拷贝到final_package目录下glibc-2.31\sysdeps\generic\dwarf2.hglibc-2.31\sysdeps\aarch64\memset-reg.hglibc-2.31\sysdeps\generic\sysdep.h(在final_package中将此文件名改为sysdep_generic.h) 然后将glibc-2.29\glibc-2.29\sysdeps\aarch64\sysdep.h 修改为文件名port_aarch64.h,文件内容增加一行#define port_ret mov pc, r14并将该文件port_aarch64.h拷贝到final_package目录下 3、文件修改port_aarch64.h修改点sysdep_generic.h修改点(添加一些内容)第一处第二处修改需要使用的函数文件,以memchr为例:1.修改函数包含的头文件:#include 修改为 #include “port_aarch64.h”2.修改函数入口和结束,或者函数定义。ENTRY (__memchr) 改为ENTRY (memchr)END (__memchr)改为END (memchr)3.删除无关的部分:Memchr.S的末尾weak_alias (__memchr, memchr)libc_hidden_builtin_def (memchr)注:如果要使用sysdeps\aarch64\multiarch中和芯片属性相关的代码,除了上述还需多修改一部分:以memcpy_falkor.S为例:#if IS_IN (libc)以及文件尾的#endif 均删除函数名修改:全篇的__memcpy_falkor 改为memcpy。4、编译将需要的函数都抽离并修改完以后,将他们编成一个so,用程序去链接此so,就可以提升性能了。gcc *.S -march=armv8-a+lse -fPIC -shared -o libkunpeng.so 大家如果有什么修改上的疑问,可以回帖,我看到会给大家回复的。最后感谢华为给glibc的arm分支做的贡献,感谢华为对arm生态建设所作出的努力。我这边自己做完so包并经过测试,单接口性能差不多有30%+的提升~