查看: 4729|回复: 3

[原创] TQ3358 Linux CAN测试程序的编译

[复制链接]
  • TA的每日心情
    难过
    2014-8-15 13:52
  • 签到天数: 35 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2014-3-3 09:46:03 | 显示全部楼层 |阅读模式
    分享到:
    公司的TQ3358开发板支持CAN通信功能,而且最近很多朋友也有提到关于CAN测试程序 canutils 源码的编译的问题。现放出canutils 的源码和编译教程,以方便大家测试使用。

    [hide]  1.首先编译libsocketcan
       从终端进入
    libsocketcan源码目录,输入命令
        CC=arm-linux-gcc ./configure  --prefix=<安装路径>(需绝对路径)   --host=arm-linux --build=i386
        make
        make install
    编译成功,在 <安装路径>/lib/pkgconfig/下有个libsocketcan.pc文件,将其拷贝到PC的/usr/lib/
    pkgconfig/目录下。


        2.编译canutils-4.0.6
        先确认系统已安装automake
        apt-get install automake   
       配置
        ./configure --host=arm-linux --prefix=<安装目录>  --enable-debug
       (如出现
        config.status: executing libtool commands
        sed: can't read config/autoconf/ltmain.sh: No such file or directory
        sed: can't read libtoolT: No such file or directory
        则apt-get install libtool 安装
       然后执行
      终端输入命令:autoreconf
        再重新
         ./configure --host=arm-linux --prefix=
    <安装目录>  --enable-debug
      )
        在canutils-4.0.6源码中的src/GNUmakefile.in 中的
        CFLAGS = @CFLAGS@ (大概在96/97行)改为
        CFLAGS = -Wall -g -O2
        make
       

    1)错误1:
    cc1: warnings being treated as errors
    candump.c: In function 'main':
    candump.c:190: error: ignoring return value of 'daemon', declared with attribute warn_unused_result
    make[1]: *** [candump.o] 错误 1

    解决方法:
    根据错误提示,是candump.c 忽略了返回值。所以在
    打开源码src/candump.c文件,找到190行,将
         daemon(1, 0);  
    改为:
        {
              int ret =0 ;
              ret = daemon(1,0);
        }
    保存退出,重新make。

    2)错误2:
    /bin/bash ../libtool --tag=CC   --mode=link arm-linux-gcc  -Wall -g -O2   -o candump candump.o  
    libtool: Version mismatch error.  This is libtool 2.4.2 Debian-2.4.2-1ubuntu1, but the
    libtool: definition of this LT_INIT comes from libtool 2.4.
    libtool: You should recreate aclocal.m4 with macros from libtool 2.4.2 Debian-2.4.2-1ubuntu1
    libtool: and run autoconf again.
    make[1]: *** [candump] 错误 63
    解决方法:
    终端中执行命令:rm aclocal.m4 & aclocal & autoconf
    然后执行:rpmbuild -bb *.spec
    重新 make

    3)错误3:
    canecho.c: In function 'main':
    canecho.c:163: error: ignoring return value of 'write', declared with attribute warn_unused_result
    make[1]: *** [canecho.o] 错误 1
    解决方法:
    将src/canecho.c的第163行:
           write(s[out], &frame, sizeof(frame));
    改为:
            int ret;
            ret = write(s[out], &frame, sizeof(frame));
    重新make。
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-8-15 09:28
  • 签到天数: 222 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2014-3-3 11:01:36 | 显示全部楼层
    多谢楼主分享~~~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2014-7-16 09:10
  • 签到天数: 361 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2014-3-3 15:00:46 | 显示全部楼层
    楼楼辛苦了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-8-25 12:42
  • 签到天数: 692 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2014-3-3 17:00:02 | 显示全部楼层
    欢迎楼主继续分享!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条



    手机版|小黑屋|与非网

    GMT+8, 2025-1-11 16:01 , Processed in 0.144414 second(s), 21 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.