Android can-utils

本文记录了在Android RK3288平台上编译CAN-utils过程中遇到的问题及其解决方案,包括未声明标识符错误和不同符号整数比较警告等,并提供了具体的修改方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

平台

 Android + RK3288 7.1 / RK3399 9.0

编译

  1. 下载源码
    can-utils

  2. 解码到源码目录下

  3. 加载环境并执行mm

报错:

/rk3288/obj/EXECUTABLES/j1939cat_intermediates/j1939cat.P; sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\\\\$//' -e '/^\$/ d' -e 's/\$/ :/' < out/target/product/rk3288/obj/EXECUTABLES/j1939cat_intermediates/j1939cat.d >> out/target/product/rk3288/obj/EXECUTABLES/j1939cat_intermediates/j1939cat.P; rm -f out/target/product/rk3288/obj/EXECUTABLES/j1939cat_intermediates/j1939cat.d )"
packages/anson/can-utils-master/j1939cat.c:255:62: error: use of undeclared identifier 'SCM_TIMESTAMPING_OPT_STATS'; did you mean 'SOF_TIMESTAMPING_OPT_STATS'?
        } else if (cm->cmsg_level == SOL_SOCKET && cm->cmsg_type == SCM_TIMESTAMPING_OPT_STATS) {
                                                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~
                                                                    SOF_TIMESTAMPING_OPT_STATS
packages/anson/can-utils-master/include/linux/net_tstamp.h:30:2: note: 'SOF_TIMESTAMPING_OPT_STATS' declared here
        SOF_TIMESTAMPING_OPT_STATS = (1<<12),
        ^
1 error generated.
ninja: build stopped: subcommand failed.
build/core/ninja.mk:148: recipe for target 'ninja_wrapper' failed
make: *** [ninja_wrapper] Error 1
make: Leaving directory '/disk2/anson/rk3288_n712'

#### make failed to build some targets (01:05 (mm:ss)) ####

没找到SCM_TIMESTAMPING_OPT_STATS的定义, google 了下, 将就用下:

#define SCM_TIMESTAMPING_OPT_STATS  54

以下新增3399 9.0部分编译错误及处理


packages/can-utils-master/can-calc-bit-timing.c:606:12: error: comparison of integers of different signs: 'int' and 'const __u32' (aka 'const unsigned int') [-Werror,-Wsign-compare]
            tseg1 < btc->tseg1_min || tseg1 > btc->tseg1_max ||
            ~~~~~ ^ ~~~~~~~~~~~~~~
packages/can-utils-master/can-calc-bit-timing.c:606:38: error: comparison of integers of different signs: 'int' and 'const __u32' (aka 'const unsigned int') [-Werror,-Wsign-compare]
            tseg1 < btc->tseg1_min || tseg1 > btc->tseg1_max ||
                                      ~~~~~ ^ ~~~~~~~~~~~~~~
2 errors generated.
[ 17% 34/196] target  C: candump <= packages/can-utils-master/candump.c
packages/can-utils-master/candump.c:170:25: warning: unused parameter 'signo' [-Wunused-parameter]
static void sigterm(int signo)
                        ^
1 warning generated.
ninja: build stopped: subcommand failed.
14:30:21 ninja failed with: exit status 1

#### failed to build some targets (03:56 (mm:ss)) ####

	int tseg1, alltseg;
	//改为
	unsigned int tseg1, alltseg;

packages/can-utils-master/testj1939.c:56:27: warning: unused parameter 'sig' [-Wunused-parameter]
static void onsigalrm(int sig)
                          ^
packages/can-utils-master/testj1939.c:64:26: error: suggest braces around initialization of subobject [-Werror,-Wmissing-braces]
        struct itimerval it = { 0 };
                                ^
                                {}

        struct itimerval it = { 0 };
        //改为
        struct itimerval it;// = { 0 };

改完, 编译OK


PS:编译通过后, 并进行验证测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值