向开发板上移植ip工具:交叉编译 ip工具

一.  简介

前面几篇文章学习了 CAN设备节点的创建,以及如何使能 CAN驱动。

本文学习向开发板上移植ip工具。

二.  向开发板上移植ip工具:交叉编译 ip工具

注意:在移植 ip 命令的时候必须先对根文件系统做个备份!防止操作失误导致系统启动失败!切
记!!!
备份文件系统 rootfs(rootfs在 /home/wangtian/linux/nfs_File目录下):
sudo tar -cvf rootfs_2024_0324.tar.gz rootfs/

在 /home/wangtian/linux/nfs_File目录下就会生成 rootfs_2024_0324.tar.gz

1.  移植ip工具的原因

开发板加载的文件系统(即之前我使用 busybox工具制作的rootfs)中, 其实有 ip命令(即 ip工具),只是 ip命令不能操作 CAN接口。

开发板上电后,进入文件系统目录下:

运行设置 can0 的波特率的命令 "ip link set can0 type can bitrate 500000" :

可以确定,开发板上的 ip命令不能操作can0。

所以说,busybox 自带的 ip 命令并不支持对 can 的操作,因此,我们需要重新移植 ip 命令。

2. 移植ip工具

我们需要重新移植 ip 命令,也就是 iproute2
iproute2 源码下载地址为: https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/
里我们下载 4.4.0 版本的,笔者试过最新的版本,但是编译一直有问题。 4.4.0 版本的 iproute2 正点原子已经提供 ,路径为: 1 、例程源码 ->7 、第三方库源码 -> iproute2-4.4.0.tar.gz

(1)  拷贝ip工具源码包

iproute2-4.4.0.tar.gz 发送到 ubuntu 中并解压,命令如下:
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/tools$ cp /mnt/hgfs/Ubuntu_Shares/iproute2-4.4.0.tar.gz ./

解压缩 iproute2-4.4.0.tar.gz

wangtian@wangtian-virtual-machine:~/zhengdian_Linux/tools$ tar -xvf iproute2-4.4.0.tar.gz 

(2) 其次,更改Makefile中编译器

解压完成以后会得到一个名为“iproute2-4.4.0”的目录,进入此目录中,打开 Makefile 并修改。在 Makefile 中找到下面这行:
CC = gcc

改为 arm-linux-gnueabihf-gcc,也就是开发板上的编译器:

CC = arm-linux-gnueabihf-gcc

(3) 编译 ip源码

Makefile 修改完成以后,直接使用 “make” 命令编译,这里编译时出错了,提示错误信息如下:
.......................
In file included from ip.c:25:0:
../include/namespace.h:36:1: 错误: 对‘setns’的静态声明出现在非静态声明之后
 {
 ^
In file included from /opt/arm_tools/gcc_linaro/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/include/sched.h:41:0,
                 from ../include/namespace.h:4,
                 from ip.c:25:
/opt/arm_tools/gcc_linaro/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/include/bits/sched.h:91:12: 附注: ‘setns’的上一个声明在此
 extern int setns (int __fd, int __nstype) __THROW;
            ^
make[1]: *** [<内置>:ip.o] 错误 1
make[1]: 离开目录“/home/wangtian/zhengdian_Linux/tools/iproute2-4.4.0/ip”
make: *** [Makefile:50:all] 错误 2

打开 namespace.h文件, 屏蔽了如下代码:

#ifndef HAVE_SETNS
static inline int setns(int fd, int nstype)
{
#ifdef __NR_setns
	return syscall(__NR_setns, fd, nstype);
#else
	errno = ENOSYS;
	return -1;
#endif
}
#endif /* HAVE_SETNS */

 
再次运行 "make"命令进行编译,又提示 :无法找到 bison工具。于是,使用命令安装bison:
sudo apt-get install bison

重新 执行"make" 命令,提示无法找到 flex命令:
flex  -oemp_ematch.lex.c emp_ematch.l
make[1]:flex:命令未找到
make[1]: *** [Makefile:169:emp_ematch.lex.c] 错误 127
make[1]: 离开目录“/home/wangtian/zhengdian_Linux/tools/iproute2-4.4.0/tc”
make: *** [Makefile:50:all] 错误 2

解决办法:安装 flex命令:

sudo apt-get install flex

这时候可以编译成功,成功后 就会在 iproute2 源码的 ip 目录下得到一个名为 “ ip ” 的命令,如下所示:

以下操作请严格按照教程步骤来!否则可能会导致系统无法启动!

接下来就是移植 ip工具,将 ip工具拷贝到开发板文件系统相关目录下,测试 ip工具是否可用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/485380.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

力扣74---搜索二维矩阵

目录 题目描述&#xff1a; 思路&#xff1a; 代码&#xff1a; 题目描述&#xff1a; 给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a; 每行中的整数从左到右按非严格递增顺序排列。 每行的第一个整数大于前一行的最后一个整数。 给你一个整数 targ…

c#绘制图形

窗体工具控件 如果选纹理 ,需要在ImageList中选择图像(点击添加选择图片路径) using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Drawing2D; using System.Linq; using System.…

【Redis教程0x03】详解Redis的基本数据类型

引言 根据【Redis教程0x02】中介绍的&#xff0c;Redis的数据类型可分为5种基本数据类型&#xff08;String、Hash、List、Set、Zset&#xff09;和4种高级数据类型&#xff08;BitMap、HyperLogLog、GEO、Stream&#xff09;。在本篇博客中&#xff0c;我们将详解这9种数据类…

分类预测 | Matlab实现CNN-LSTM-Mutilhead-Attention卷积神经网络-长短期记忆网络融合多头注意力机制多特征分类预测

分类预测 | Matlab实现CNN-LSTM-Mutilhead-Attention卷积神经网络-长短期记忆网络融合多头注意力机制多特征分类预测 目录 分类预测 | Matlab实现CNN-LSTM-Mutilhead-Attention卷积神经网络-长短期记忆网络融合多头注意力机制多特征分类预测分类效果基本介绍模型描述程序设计参…

Springboot做分组校验

目录 分组校验 Insert分组 Upload分组 测试接口 测试结果 添加测试 更新测试 顺序校验GroupSequence 自定义分组校验 自定义分组表单 CustomSequenceProvider 测试接口 测试结果 Type类型为A Type类型为B 总结&#xff1a; 前文提到了做自定义的校验注解&#xff…

牛客NC170 最长不含重复字符的子字符串【高频 中等 map、滑动窗口 Java,Go,PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/48d2ff79b8564c40a50fa79f9d5fa9c7 思路 用一个hashmap记录每个字母的index如果这个字母已经在map里了说明已经有重复了这样就更新看这个字母上次出现的index需要注意的是这种情况&#xff1a;“bacbca”这里的a…

初识kafka-数据存储篇1

目录 背景 1 kafka总体体系结构 2 疑问解答 2.1 高吞吐低延迟 2.2 实现分布式存储和数据读取 2.3 如何保证数据不丢失 背景 最近在和产品过项目审批的时候&#xff0c;深刻感受到业务方对系统的时时响应提出了更高的要求。目前手上大部分的业务都是基础定时任务去实现的&…

【yolo算法水果新鲜程度检测】

Yolo&#xff08;You Only Look Once&#xff09;系列算法是一类流行的一阶段实时目标检测模型&#xff0c;在水果检测领域有着广泛的应用。因其高效性和实时性而受到青睐&#xff0c;可用于识别和定位图像中不同种类的水果以及水果的新鲜度。 YOLOv3 已被用于水果商品的检测分…

家乡特色推荐系统设计与实现|SpringBoot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;…

【Linux】线程互斥{线程间的互斥相关背景概念/锁的相关问题/锁的原理/可重入VS线程安全}

文章目录 0.计算机如何完成y a * b c &#xff1f;1.线程间的互斥相关背景概念2.pthread_mutex_t3.pthread_mutex_lock()4.time() or gettimeofday5.锁的相关问题6.锁的原理7.可重入VS线程安全8.完善后的代码 0.计算机如何完成y a * b c &#xff1f; 来源&#xff1a; 王道…

nodejs+vue反诈科普平台的设计与实现pythonflask-django-php

相比于以前的传统手工管理方式&#xff0c;智能化的管理方式可以大幅降低反诈科普平台的运营人员成本&#xff0c;实现了反诈科普平台的标准化、制度化、程序化的管理&#xff0c;有效地防止了反诈科普平台的随意管理&#xff0c;提高了信息的处理速度和精确度&#xff0c;能够…

基础篇Redis

基础篇Redis 1.Redis简单介绍 Redis是一种键值型的NoSql数据库&#xff0c;这里有两个关键字&#xff1a; 键值型NoSql 其中键值型&#xff0c;是指Redis中存储的数据都是以key.value对的形式存储&#xff0c;而value的形式多种多样&#xff0c;可以是字符串.数值.甚至json…

Windows/Linux-openEuler系统使用路由侠内网穿透,部署项目详细教程

文章目录 Windows/Linux-openEuler系统使用路由侠内网穿透&#xff0c;部署项目详细教程一、在windows系统下载安装路由侠并实现项目部署1、下载路由侠并注册安装到Windows系统2、点击内网映射&#xff0c;添加映射&#xff0c;注册域名前缀3、选择网站应用4、配置你想要代理项…

mysql 存储引擎 基本介绍

目录 一 存储引擎概念介绍 &#xff08;一&#xff09;存储引擎概念 &#xff08;二&#xff09;MySQL常用的存储引擎 &#xff08;三&#xff09;存储引擎运作方式 二 MyISAM 存储引擎介绍 &#xff08;一&#xff09; MyISAM 存储引擎特点 1&#xff0c;不支持…

栅格地图路径规划:基于螳螂搜索算法(Mantis Search Algorithm,MSA)的机器人路径规划(提供MATLAB代码)

一、机器人路径规划介绍 移动机器人&#xff08;Mobile robot&#xff0c;MR&#xff09;的路径规划是 移动机器人研究的重要分支之&#xff0c;是对其进行控制的基础。根据环境信息的已知程度不同&#xff0c;路径规划分为基于环境信息已知的全局路径规划和基于环境信息未知或…

数据分析和机器学习库Pandas的使用

Pandas 库是一个免费、开源的第三方 Python 库&#xff0c;是 Python 数据分析和机器学习的工具之一。Pandas 提供了两种数据结构&#xff0c;分别是 Series&#xff08;一维数组结构&#xff09;与 DataFrame&#xff08;二维数组结构&#xff09;&#xff0c;极大地增强的了 …

个人博客系列-后端项目-系统角色配置(8)

系统角色配置需要设置的接口 用户可以绑定多个角色&#xff0c;角色对应有多个路由权限。用户绑定角色后&#xff0c;可以访问当前角色下的各个api路由和菜单路由。 用户注册时设置用户角色修改用户角色&#xff08;同时对应用户可以访问的路由将会同步变更&#xff09;添加修…

有关AI的随笔(1)

随笔&#xff1a; 今天是周天&#xff0c;是个好日子&#xff0c;结果老师布置的诗还没写&#xff0c;只好去借助AI&#xff0c;结果我发现了几个有趣的问题&#xff1a; 1. AI写的诗是如何来的&#xff1f;通过数据库&#xff1f; 2. 它真的明白是什么意思吗&#xff1f;&…

AutoDL算力云进行yolov5训练流程

目录 第一步 充值第二步 选择我们用到的显卡第三步 将我们的yolov5源代码导入服务器第四步 激活环境第五步 训练第六步 训练完成 提取 第一步 充值 打开我们的算力云官网 然后找到充值入口 最低充值50 第二步 选择我们用到的显卡 一般呢我都用便宜的2080ti 选择2080ti之后 基…

前端学习之用css和html做一个仿淘宝的导航栏

代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>仿淘宝界面案例</title><style>/* 最外层盒子 */.container{width: 270px;height: 385px;border: 1px solid rgb(255, 208, 0);bord…