OK335xS canutils deal with compile error

简介: /************************************************************************************** * OK335xS canutils deal with compile error * 声明: * 本文主要是记录解决编译can测试工具(canutils)时遇到的一些编译错误。
/**************************************************************************************
 *                  OK335xS canutils deal with compile error
 * 声明:
 *     本文主要是记录解决编译can测试工具(canutils)时遇到的一些编译错误。
 *
 *                                          2015-9-4 晴 深圳 南山平山村 曾剑锋
 *************************************************************************************/

                \\\\\\\\\\\\\\\\\\\\\-*- 目录 -*-////////////////////
                |      一、参考文章:                               
                |      二、编译后简略的3层文件结构(tree -L 3):     
                |      三、libsocketcan make install 问题:         
                |      四、canutils 找不到 libsocketcan 问题:      
                |      五、canutils 安装权限不足:                  
                \\\\\\\\\\\\\\\\\\\\\\\\\\\//////////////////////////


一、参考文章:
    1. 有谁编译过canutils-4.0.6的吗?
        http://bbs.csdn.net/topics/390465516
    2. AM335X DCAN Driver Guide
        http://processors.wiki.ti.com/index.php/AM335X_DCAN_Driver_Guide#CAN_Utilities
    3. AM335x DCAN driver compile issues
        https://e2e.ti.com/support/embedded/linux/f/354/t/270303

二、最后编译出来简略的3层文件结构(tree -L 3):
    .
    ├── canutils-4.0.6
    │   ├── aclocal.m4
    │   ├── AUTHORS
    │   ├── autogen.sh
    │   ├── ChangeLog
    │   ├── config
    │   ├── config.log
    │   ├── config.status
    │   ├── configure
    │   ├── configure.ac
    │   ├── COPYING
    │   ├── GNUmakefile
    │   ├── GNUmakefile.am
    │   ├── GNUmakefile.in
    │   ├── include
    │   ├── install
    │   │   ├── bin
    │   │   ├── lib
    │   │   ├── sbin
    │   │   └── share
    │   ├── libtool
    │   ├── man
    │   ├── remake.sh
    │   └── src
    ├── canutils-4.0.6.tar.bz2
    ├── libsocketcan-0.0.8
    │   ├── aclocal.m4
    │   ├── autogen.sh
    │   ├── config
    │   ├── config.log
    │   ├── config.status
    │   ├── configure
    │   ├── configure.ac
    │   ├── GNUmakefile
    │   ├── GNUmakefile.am
    │   ├── GNUmakefile.in
    │   ├── include
    │   ├── install
    │   │   ├── include
    │   │   ├── lib
    │   │   └── share
    │   ├── INSTALL
    │   ├── libtool
    │   ├── README
    │   ├── remake.sh
    │   ├── src
    │   └── tests
    └── libsocketcan-0.0.8.tar.bz2

三、libsocketcan make install 问题:
    1. 出错现象:
        Qt@zengjf:~/practice/c/canTest/libsocketcan-0.0.8$ make install
        Making install in include
        make[1]: Entering directory `/home/Qt/practice/c/canTest/libsocketcan-0.0.8/include'
        make[2]: Entering directory `/home/Qt/practice/c/canTest/libsocketcan-0.0.8/include'
        make[2]: Nothing to be done for `install-exec-am'.
        test -z "/home/Qt/practice/c/canTest/libsocketcan-0.0.8/include" || /bin/mkdir -p 
            "/home/Qt/practice/c/canTest/libsocketcan-0.0.8/include"
        /usr/bin/install -c -m 644  libsocketcan.h can_netlink.h 
            '/home/Qt/practice/c/canTest/libsocketcan-0.0.8/include/.'
        /usr/bin/install: `libsocketcan.h' and 
            `/home/Qt/practice/c/canTest/libsocketcan-0.0.8/include/./libsocketcan.h' are the same file
        /usr/bin/install: `can_netlink.h' and 
            `/home/Qt/practice/c/canTest/libsocketcan-0.0.8/include/./can_netlink.h' are the same file
        make[2]: *** [install-nobase_includeHEADERS] Error 1
        make[2]: Leaving directory `/home/Qt/practice/c/canTest/libsocketcan-0.0.8/include'
        make[1]: *** [install-am] Error 2
        make[1]: Leaving directory `/home/Qt/practice/c/canTest/libsocketcan-0.0.8/include'
        make: *** [install-recursive] Error 1
    2. 解决方法:
        export GNUEABI=arm-linux-gnueabihf
        export CC=$GNUEABI-gcc
        export LD=$GNUEABI-ld
        export NM=$GNUEABI-nm
        export AR=$GNUEABI-ar
        export RANLIB=$GNUEABI-ranlib
        export CXX=$GNUEABI-c++filt
        export INSTALL_PATH=$PWD
        export PREFIX=$INSTALL_PATH/
        export CROSS_COMPILE_PREFIX=$PREFIX
        export PATH=$TOOL_CHAIN_PATH/bin:$PATH

        #./configure --host=arm-linux --prefix=$PREFIX --enable-debug     
        # 官网给出的安装目录出错导致的,给出合适的安装路径
        ./configure --host=arm-arago-linux --prefix=$PREFIX/install --enable-debug

四、canutils 找不到 libsocketcan 问题:
    1. 错误现象:
        checking for pkg-config... /home/Qt/ti-processor-sdk-linux-am335x-evm-01.00.00.00/linux-devkit/sysroots/i686-arago-linux/usr/bin/pkg-config
        checking pkg-config is at least version 0.9.0... yes
        checking for libsocketcan... no
        configure: error: *** libsocketcan version above 0.0.8 not found on your system
    2. 解决方法:
        export GNUEABI=arm-linux-gnueabihf
        export CC=$GNUEABI-gcc
        export LD=$GNUEABI-ld
        export NM=$GNUEABI-nm
        export AR=$GNUEABI-ar
        export RANLIB=$GNUEABI-ranlib
        export CXX=$GNUEABI-c++
        export PREFIX=$FILESYS_PATH/usr
        export CROSS_COMPILE_PREFIX=$PREFIX
        export PATH=$TOOL_CHAIN_PATH/bin:$PATH
        export LIBSOCKETCAN_INSTALL_DIR=$LIBSOCKETCAN_PATH/install
        export PKG_CONFIG_PATH=$LIBSOCKETCAN_PATH/config
        export LD_LIBRARY_PATH=${LIBDIR}:${LD_LIBRARY_PATH}
        export LD_RAN_PATH=${LIBDIR}:${LD_RAN_PATH}:/home/Qt/practice/c/canTest/libsocketcan-0.0.8/src/.libs
        export LDFLAGS="-Wl,--rpath -Wl,$LIBSOCKETCAN_INSTALL_DIR/lib"
        export INCLUDES="-I$LIBSOCKETCAN_INSTALL_DIR/include"
        
        #./configure --host=arm-arago-linux --prefix=$PREFIX --enable-debug
        # 加上libsocketcan库的位置
        ./configure --host=arm-linux --prefix=$PREFIX/install --enable-debug libsocketcan_LIBS=-lsocketcan LDFLAGS="-L$PWD/../libsocketcan-0.0.8/install/lib" libsocketcan_CFLAGS=-I$PWD/../libsocketcan-0.0.8/install/include

五、canutils 安装权限不足:
    1. 错误现象:
        Qt@zengjf:~/practice/c/canTest/canutils-4.0.6$ make install
        Making install in include
        make[1]: Entering directory `/home/Qt/practice/c/canTest/canutils-4.0.6/include'
        make[2]: Entering directory `/home/Qt/practice/c/canTest/canutils-4.0.6/include'
        make[2]: Nothing to be done for `install-exec-am'.
        make[2]: Nothing to be done for `install-data-am'.
        make[2]: Leaving directory `/home/Qt/practice/c/canTest/canutils-4.0.6/include'
        make[1]: Leaving directory `/home/Qt/practice/c/canTest/canutils-4.0.6/include'
        Making install in config
        make[1]: Entering directory `/home/Qt/practice/c/canTest/canutils-4.0.6/config'
        make[2]: Entering directory `/home/Qt/practice/c/canTest/canutils-4.0.6/config'
        make[2]: Nothing to be done for `install-exec-am'.
        test -z "/usr/install/lib/pkgconfig" || /bin/mkdir -p "/usr/install/lib/pkgconfig"
        /bin/mkdir: cannot create directory `/usr/install': Permission denied
        make[2]: *** [install-pkgconfigDATA] Error 1
        make[2]: Leaving directory `/home/Qt/practice/c/canTest/canutils-4.0.6/config'
        make[1]: *** [install-am] Error 2
        make[1]: Leaving directory `/home/Qt/practice/c/canTest/canutils-4.0.6/config'
        make: *** [install-recursive] Error 1
    2. 解决方法:
        export GNUEABI=arm-linux-gnueabihf
        export CC=$GNUEABI-gcc
        export LD=$GNUEABI-ld
        export NM=$GNUEABI-nm
        export AR=$GNUEABI-ar
        export RANLIB=$GNUEABI-ranlib
        export CXX=$GNUEABI-c++
        #export PREFIX=$FILESYS_PATH/usr        # 换一个有权限的路径
        export PREFIX=$PWD
        export CROSS_COMPILE_PREFIX=$PREFIX
        export PATH=$TOOL_CHAIN_PATH/bin:$PATH
        export LIBSOCKETCAN_INSTALL_DIR=$LIBSOCKETCAN_PATH/install
        export PKG_CONFIG_PATH=$LIBSOCKETCAN_PATH/config
        export LD_LIBRARY_PATH=${LIBDIR}:${LD_LIBRARY_PATH}
        export LD_RAN_PATH=${LIBDIR}:${LD_RAN_PATH}:/home/Qt/practice/c/canTest/libsocketcan-0.0.8/src/.libs
        export LDFLAGS="-Wl,--rpath -Wl,$LIBSOCKETCAN_INSTALL_DIR/lib"
        export INCLUDES="-I$LIBSOCKETCAN_INSTALL_DIR/include"
        
        #./configure --host=arm-arago-linux --prefix=$PREFIX --enable-debug
        ./configure --host=arm-linux --prefix=$PREFIX/install --enable-debug libsocketcan_LIBS=-lsocketcan LDFLAGS="-L$PWD/../libsocketcan-0.0.8/install/lib" libsocketcan_CFLAGS=-I$PWD/../libsocketcan-0.0.8/install/include

 

目录
相关文章
|
关系型数据库 测试技术 数据库
Python 基于人脸识别的实验室智能门禁系统的设计与实现
Python 基于人脸识别的实验室智能门禁系统的设计与实现
|
8月前
|
关系型数据库 MySQL Linux
CentOS 7系统下详细安装MySQL 5.7的步骤:包括密码配置、字符集配置、远程连接配置
以上就是在CentOS 7系统下安装MySQL 5.7的详细步骤。希望这个指南能帮助你顺利完成安装。
1865 26
|
JavaScript 前端开发 Java
Java数字化产科管理系统源码,多家医院应用案例,可直接上项目
Java开发的数字化产科管理系统,已在多家医院实施,支持直接部署。系统涵盖孕产全程,包括门诊、住院、统计和移动服务,整合高危管理、智能提醒、档案追踪等功能,与HIS等系统对接。采用前后端分离架构,Java语言,Vue前端,若依框架,MySQL数据库。优势在于提升就诊效率,降低漏检率,自动报表生成,减少重复工作,支持数据研究,并实现医院与卫计委平台的数据互通,打造全生育周期健康服务。
232 4
|
12月前
|
DataWorks 搜索推荐 数据挖掘
DataWorks: 驾驭数据浪潮,解锁用户画像分析新纪元
本文详细评测了DataWorks产品,涵盖最佳实践、用户体验、与其他工具对比及Data Studio新功能。内容涉及用户画像分析、数据管理作用、使用过程中的问题与改进建议,以及Data Studio的新版Notebook环境和智能助手Copilot的体验。整体评价肯定了DataWorks在数据处理和分析上的优势,同时也指出了需要优化的地方。
428 24
|
缓存 监控 JavaScript
Node.js中基于node-schedule实现定时任务之详解
Node.js中基于node-schedule实现定时任务之详解
756 0
|
Java Maven
解决Maven中CANNOT Resolve XXX错误
解决Maven中CANNOT Resolve XXX错误
1159 0
|
Ubuntu Python
全网最简约的Vscode配置Anaconda环境(百分百成功)
全网最简约的Vscode配置Anaconda环境(百分百成功)
31593 0
全网最简约的Vscode配置Anaconda环境(百分百成功)
|
关系型数据库 MySQL PostgreSQL
性能优化特性之:code_hugepage - 代码大页
本文介绍了倚天实例上的内存优化特性:代码段大页,并从优化原理、使用方法、性能收益进行详细阐述。
|
NoSQL Redis Sentinel
redis数据迁移方式
redis数据迁移方式汇总
2631 0
|
Web App开发 数据采集 数据挖掘
还有这种骚操作:使用Golang实现无头浏览器浏览和截图
还有这种骚操作:使用Golang实现无头浏览器浏览和截图
996 0