can-utils编译和验证文档(编译篇)
can-utils源码下载
https://salsa.debian.org/debian/can-utils/-/tree/v2023.03?ref_type=tags
解压:unzip can-utils-v2023.03.zip
armv7
1.使用cmake方式
cmake -DCMAKE_TOOLCHAIN_FILE= ${HOME}/native/build/cmake/ohos.toolchain.cmake -DOHOS_ARCH=armeabi-v7a -S . -B out/armv7

2.编译、安装
cd out/armv7目录下,执行make -j$(nproc)

报错原因:在j1939acd.c文件的第470行和489行,使用了未声明的标识符program_invocation_name和program_invocation_short_name,它们是glibc中定义的两个全局变量,但需求里指出不能使用glibc做为依赖库,所以需要找到替代方法。
修改j1939acd.c

代码如下:
#include <libgen.h>
static char*program_invocation_name = NULL;
static char*program_invocation_short_name = NULL;

代码如下:
program_invocation_name = strdup(argv[0]);
program_invocation_short_name = strdup(basename(argv[0]));

代码如下:
free(program_invocation_short_name);
program_invocation_short_name = strdup(program_invocation_short_name);
修改j1939sr.c

代码如下:
#include <libgen.h>
static char*program_invocation_name = NULL;
static char*program_invocation_short_name = NULL;

代码如下:
program_invocation_name = strdup(argv[0]);
program_invocation_short_name = strdup(basename(argv[0]));
修改完成(上述修改点已生成补丁)
进入cantuils.patch所在目录
执行patch -p1 < canutils.patch 成功后
cd out/armv8目录下:执行make -j$(nproc)

can-utils工具编译产物在out/armv7
armv8
执行:cmake -DCMAKE_TOOLCHAIN_FILE=${HOME}/native/build/cmake/ohos.toolchain.cmake -S . -B out/armv8
进入cantuils.patch所在目录
执行patch -p1 < canutils.patch 成功后
cd out/armv8目录下执行:make -j$(nproc)


can-utils工具编译产物在out/armv8
更多推荐
所有评论(0)