当前位置: 首页 > news >正文

商城网站建设目标广告牌

商城网站建设目标,广告牌,网站开发修改端口,网络是哪家公司最好1.为什么移植 疑惑 起初我也认为#xff0c;像libbpf-bootstrap这样在ebpf程序开发中很常用的框架#xff0c;理应支持不同架构的交叉编译。尤其是向内核态的ebpf程序本身就是直接通过clang的-target btf直接生成字节码#xff0c;各个内核上的ebpf虚拟机大同小异#xf…1.为什么移植 疑惑 起初我也认为像libbpf-bootstrap这样在ebpf程序开发中很常用的框架理应支持不同架构的交叉编译。尤其是向内核态的ebpf程序本身就是直接通过clang的-target btf直接生成字节码各个内核上的ebpf虚拟机大同小异对于字节码大概率是兼容的。那么问题就落在用户态程序生成上面。 加载器 由于libbpf-bootstrap框架使用bpftools将xxx.bpf.c生成为xxx.skel.h再注入到用户态xx.c程序当中因此用户态程序本身就是字节码的加载器。基于安卓的ebpf开发也有不少前辈探索过如下图 图源eBPF on Android之stackplz从0到1 - SeeFlowerX ps:强推他的安卓package用户态程序堆栈追踪工具我的不少灵感也来自于他的开发过程在此谢过SeeFlowerX前辈了。 最终他选择的解决方案是golang的ebpf生态交叉编译相当方便。但我面临的是性能的需要我还是打算折腾一下纯C的开发生态但是AOSP又实在太过庞大且面临API变动会使我们很头疼。 2.使用方法 准备 Android NDKgcc-aarch64-linux-gnuAndroid phone with root and unlock BL 安装依赖 git clone https://github.com/JiaHuann/libbpf-bootstrap-android cd libbpf-bootstrap-android sudo apt install gcc-aarch64-linux-gnu llvm clang wget https://dl.google.com/android/repository/android-ndk-r25c-linux.zip?hlzh-cn android-ndk-r25c-linux.zip unzip android-ndk-r25c-linux 设置环境变量 vim ~/.bashrc export your android-ndk-r25c/toolchains/llvm/prebuilt/linux-x86_64/bin to PATH 编译和推送 cd examples/c makeadb devices adb remount # may fail, you can leave with issure. adb push examples/c/btf_file/* example/c/your_executable_file /data/local/tmp adb shell #into android kernel shell 安卓shell操作 cd /data/local/tmp chmod x your_excutable_file ./run Congratulations! 运行效果如下 资料直通车Linux内核源码技术学习路线视频教程内核源码 学习直通车Linux内核源码内存调优文件系统进程管理设备驱动/网络协议栈 3.针对安卓的特性 libelf,libz on aarch64 embedded.x86 - android13(aarch64) cross-compile you can directly write ebpf both kernel-program and user-program on x86 machine.FlameGraph embedded to monitor performance.For None BTF/vmlinux android-kernel(CONFIG_DEBUG_INFO_BTF not set) support.adb debug (after compilinglinking, directly push into android-phone) embedded. 4.移植过程 寻找方案 于是我继续折腾libbpf-bootstrap的交叉编译好巧不巧在How to cross-compile programs from amd64 to arm64 · Issue #144 · libbpf/libbpf-bootstrap · GitHub这个issure中也发现了这个问题显然直到现在还是open状态给出的maintainer给出的方案是 Yes, libbpf depends on libelf and libz, so you need declare where the libraries and header files can be found. such as,  make EXTRA_CFLAGS-IXXX EXTRA_LDFLAGS-LXXX ARCHarm64. You can get a copy of these libraries from here for quickly verification if you dont want to cross-compile them yourself. 我寻思着也可行但是几经折腾后我发现了很多问题 Android NDK在r17已经宣称不支持gcc在r18已经删掉最新版的r25只有clang在使用NDK交叉编译时会遇到一堆莫名其妙的问题。我的开发机并没有打开CONFIG_DEBUG_BTF_INFO但是为了方便我想引入外部BTF file但是有些目录在android kernel并不可写。 解决 最终我在本地几经尝试交叉编译出了libbpf依赖的libelf以及libz,很有趣的是在编译的过程中我使用aarch64-linux-gnu竟然编出来的依赖竟然可以用。在libbpf-bootstrap中想到用户态程序可能也没有太多编译上的新特性于是我继续使用aarch64-linux-gnu交叉编译果然还是可行。最终aarch64的可执行文件还是编译了出来。 为了优化大家的开发速度和不再折腾这个过程我将所有的细节依赖都合并了起来并且修改了libbpf源码加入了外部BTF文件路径且在repo中放入了一个a13-5.10的btf 文件我写定了路径为/data/local/tmp,push到这里就可以使用。关于这个btf版本问题我的内核是5.4但是目前使用起来尚未发现问题。GitHub - JiaHuann/libbpf-bootstrap-android: Do something to fit android aarch64 to develop ebpf programs using libbpf-bootstrap framework 至此可以ebpf程序源码可以无需任何改动就运行在安卓kernel当然有一些kernel版本决定的特性和api还是会限制的这个与是否交叉编译运行无关 PS:当初为了验证是否可行全是草率的静态链接的生成的可执行文件可能会有点大后续即将马上修改为动态链接。 当然如果有条件还是使用arm虚拟机或者qemu开发吧交叉编译确实不好折腾: (当我还在折腾的时候我同学的mac已经能run了 原文作者Linux内核之旅
http://www.w-s-a.com/news/38175/

相关文章:

  • 云南网页设计制作seo计费系统源码
  • 屏蔽ip网站吗行业外贸网站建设
  • 河北城乡建设学校网站常州网站建设公司平台
  • 合肥网站建设市场分析网站收录后怎么做排名
  • 湖南企业网站建设如何推广手机网站
  • 网站建设项目经历网站推广服务 商务服务
  • 加强网站的建设福州seo排名外包
  • 做婚庆找什么网站有专门为个人网站做推广的吗
  • 网站搭建要求模板学编程需要英语基础吗
  • 网上如何建网站卖量具净水机企业网站源码
  • 网站推广 软件规划设计公司年终总结
  • 视频网站开发方法微站网建站系统
  • 渐变网站网页界面设计的宗旨是什么
  • 网站排名提升工具免费韶关做网站公司
  • 做网站一个月可以赚多少钱东营市建设工程招标网
  • 网站开发工具阿里云怎么做网站
  • 用html做静态网站成都专业logo设计公司
  • 哪里有免费建站平台233小游戏网页版在线玩
  • 为什么我的网站做不起来网站能搜索到
  • 方又圆网站建设信息流广告二级代理
  • 公司管理网站首页网站后台编辑框不显示
  • aspnet网站开发模板备案 网站建设方案书
  • 营销软件网站wordpress优秀的破解主题
  • 卧龙区网站建设国内漂亮网站欣赏
  • 服装 网站模板 wordpress石家庄做网站的公司有哪些
  • 惠州技术支持网站建设百度怎样注册免费的网站
  • 无锡哪里有做网站的公司泸州网站建设公司
  • 怎么进行网站推广jsp可以做那些小网站
  • 懒人手机网站wordpress修改秒速
  • WordPress资讯网站用花生壳做网站