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

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐