openharmony中运行libbpf程序
环境: ubuntu 2204 openharmony 3.2(Linux kernel 5.10) hdc 1.2.0a 在openharmony中运行libbpf程序主要是交叉编译和几个依赖库的移植: 交叉编译: 下载交叉编译器: sudo apt-get install gcc-aarch64-linux-g
·
环境:
ubuntu 2204
openharmony 3.2(Linux kernel 5.10)
hdc 1.2.0a
在openharmony中运行libbpf程序主要是交叉编译和几个依赖库的移植:
交叉编译:
下载交叉编译器:
sudo apt-get install gcc-aarch64-linux-gnu
静态库移植
zlib库
wget https://www.zlib.net/zlib-1.3.tar.gz
tar -xzvf zlib-1.3.tar.gz
cd zlib-1.3/
#指定编译器
export CC=aarch64-linux-gnu-gcc
#库文件输出路径
./configure --prefix=/home/nans/install
make
make install
elfutils库
git clone https://gitee.com/mirrors/platform_external_elfutils.git
#生成配置文件
autoreconf -i -f && \
./configure --prefix=/home/nans/install --enable-maintainer-mode --disable-libdebuginfod --disable-debuginfod --host=aarch64-linux-gnu
#编译安装
make&&make install
复制aarch64库文件到交叉编译器目录下
sudo cp /home/nans/install/*.a /lib/aarch64-linux-gnu/
libbpf库
源码中的makefile默认编译为x86架构,这里需要指令交叉编译器
git clone https://github.com/libbpf/libbpf-bootstrap.git
修改libbpf源码中/libbpf-bootstrap/libbpf/src/Makefile27行和28行的编译器和链接器选项:
$(call allow-override,CC,aarch64-linux-gnu-gcc)
$(call allow-override,LD,aarch64-linux-gnu-ld)
libbpf库依赖zlib库和elfutils库,修改43行库文件搜索路径:
ALL_LDFLAGS += -L/lib/aarch64-linux-gnu/
编译安装
make&&make install
复制aarch64库文件到交叉编译器目录下
sudo cp /home/nans/libbpf-bootstrap/libbpf/src/libbpf.a /lib/aarch64-linux-gnu/
编译libbpf程序
bpftool安装:
sudo apt install linux-tools-$(uname -r) sudo apt install linux-cloud-tools-$(uname -r)
生成内核头文件:
sudo bpftool btf dump file /sys/kernel/btf/vmlinux format c > vmlinux.h
编译为字节码:
clang -g -O2 -target bpf -D__TARGET_ARCH_aarch64 -I/usr/aarch64-linux-gnu/include -I. -c minimal.bpf.c -o minimal.bpf.o sudo bpftool gen skeleton minimal.bpf.o > minimal.skel.h
编译用户态程序:
clang -g -O2 -Wall -I . -c minimal.c -o minimal.o -target aarch64-linux-gnu clang -Wall -O2 -g minimal.o -static -lbpf -lelf -lz -o minimal -target aarch64-linux-gnu
将编译好的libbpf可执行文件通过hdc发送到ohos开发板
hdc file send bootstrap /data
hdc shell
chmod +x bootstrap
#运行libbpf程序
./data/bootstrap
./data/minimal
运行结果如下:


更多推荐
所有评论(0)