IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 树莓派小练习以及嵌入式Linux(树莓派)环境设置和交叉编译 -> 正文阅读

[系统运维]树莓派小练习以及嵌入式Linux(树莓派)环境设置和交叉编译

一、树莓派创建账号

使用VNC viewer连接树莓派(用PUTTY也行)
点击进入terminal:
在这里插入图片描述

使用命令sudo su进入root权限
在这里插入图片描述
使用命令useradd -m -s /bin/bash 用户名创建用户
命令:passwd 用户名设置密码
在这里插入图片描述

给用户赋root权限:
命令:visudo进入到赋权限的文件,找到

root    ALL=(ALL:ALL)   ALL   

在这一行下写:

用户名1 ALL=(ALL:ALL)   ALL   
用户名2 ALL=(ALL:ALL)   ALL   

保存退出即可。

二、树莓派上完成以下练习

1、所有同学使用各自的账号访问树莓派,在个人目录下 (/home/BaiL) 使用vi 创建 helloworld C程序或者附件带有断言assert 功能的C程序,然后用 gcc 进行编译、链接、运行。并解释C语言assert宏的作用。
2、用scp 命令,练习在不同Linux系统之间(比如Ubuntu系统、WSL 系统与树莓派系统)进行文件复制传输。
3、(本周选做)在win10 或Ubuntu系统上创建ARM Linux程序的交叉编译环境。

1.带断言assert功能的c程序的编译

C 标准库 - <assert.h>
C 标准库的 assert.h头文件提供了一个名为 assert 的宏,它可用于验证程序做出的假设,并在假设为假时输出诊断消息。
已定义的宏 assert 指向另一个宏 NDEBUG,宏 NDEBUG 不是 <assert.h> 的一部分。如果已在引用 <assert.h> 的源文件中定义 NDEBUG 为宏名称,则 assert 宏的定义如下:

#define assert(ignore) ((void)0)

库宏
下面列出了头文件 assert.h 中定义的唯一的函数:
void assert(int expression) 这实际上是一个宏,不是一个函数,可用于在 C 程序中添加诊断。
C 库宏 - assert()
描述

C 库宏 void assert(int expression) 允许诊断信息被写入到标准错误文件中。换句话说,它可用于在 C 程序中添加诊断。
声明
下面是 assert() 宏的声明。
void assert(int expression);
参数
expression – 这可以是一个变量或任何 C 表达式。如果 expression 为 TRUE,assert() 不执行任何动作。如果 expression 为 FALSE,assert() 会在标准错误 stderr 上显示错误消息,并中止程序执行。
返回值
这个宏不返回任何值。
示例
用新分配的账号密码使用putty连接树莓派
使用ROOT权限
在这里插入图片描述

使用nano命令新建一个helloworld.c文件:
在这里插入图片描述

写入以下代码:
在这里插入图片描述

一步编译到位:
gcc helloworld.c -o helloworld
运行:
./helloworld
满足要求的正常情况:
在这里插入图片描述
输入a<10:
在这里插入图片描述

一步步编译参考以前的博客Linux GCC常用命令和ELF文件格式的(一、2)

2.用scp 命令练习在不同Linux系统之间进行文件复制传输

scp 命令(secure copy)将文件或者目录从一个Linux系统下复制到另一个Linux系统下,传输数据用的SSH协议,保证了数据的安全。
将 Ubuntu 中的文件拷贝到 树莓派 中:
树莓派初始文件:
在这里插入图片描述
本地发到远程:

scp 本地Linux系统文件路径 远程用户名@IP地址:远程系统文件绝对路径名

在这里插入图片描述

树莓派端接收成功:
在这里插入图片描述
查看内容:
在这里插入图片描述

树莓派传到Ubuntu(Ubuntu上操作):
树莓派上要传的文件:
在这里插入图片描述
在Ubuntu上使用命令:

scp 远程用户名@IP地址:文件的绝对路径本地Linux系统路径

在这里插入图片描述

查看内容;
在这里插入图片描述

3.在Ubuntu系统上创建ARM Linux程序的交叉编译环境

我的Ubuntu是64位的,所以提供了64位的arm-linux-gcc交叉编译器。(如果你的Linux系统是64位的,但安装32位的交叉编译器,还需要额外安装32位的运行库。)

这里用的是:arm-2009q3.tar.bz2,附上百度网盘下载链接:
https://pan.baidu.com/s/1PXI37uslnb-ItqjxGKBnIQ
提取码:1713

在主机上下载好安装包后,将安装包直接拖进Ubuntu,前提是已经安装好VMwareTools。
安装步骤:
1.在桌面打开Terminal (快捷键 ctrl+alt+t)

2.输入 ls, 并输入 cd 桌面/

3.在 桌面 目录下输入ls后,选中安装包右键,选择复制

4.输入 sudo chmod 777 arm-linux-gcc-4.6.4-arm-x86_64.tar.bz2 ,其中包名为右键->粘贴,赋予其全部权限。

5.输入 tar -jxvf arm-linux-gcc-4.6.4-arm-x86_64.tar.bz2 ,等待解压完成
在这里插入图片描述
6.解压之后,重新打开终端,再进行如下命令,创建新目录 arm

sudo mkdir /usr/local/arm

创建成功后,赋予其全部权限,输入以下命令:

sudo chmod 777 /usr/local/arm

在这里插入图片描述

7.然后重新打开命令窗口,进行如下命令,进入到解压缩文件,直至找到 gcc-4.6.4(复制:ctrl+shift+c,粘贴:crtl+shift+v)
在这里插入图片描述

8.将 gcc-4.6.4 复制到 /usr/local/arm目录下

sudo cp -r gcc-4.6.4 /usr/local/arm

在这里插入图片描述

9.设置 PATH环境变量:

sudo gedit /etc/profile

在文件最后添加两行,输入以下代码:

export PATH=$PATH:/usr/local/arm/gcc-4.6.4/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/arm/gcc-4.6.4/lib

在这里插入图片描述

第一行是添加执行程序环境变量,第二行是库文件的路径。保存退出。
在这里插入图片描述

10.使用source命令重新加载生效配置文件:

source /etc/profile

11.查看当前arm-linux-gcc版本(检查是否安装成功)

arm-none-linux-gnueabi-gcc   -v

在这里插入图片描述

出现如上图所示,即安装成功。
程序编译以及下载
重新打开终端

1.创建/mnt/nfs目录,回车后需要输入管理员密码

sudo  mkdir /mnt/nfs

2.修改/mnt/nfs的访问权限:

sudo  chmod -R 777 /mnt/nfs

3.进入/mnt/nfs目录,创建hello文件夹并进入hello文件:

cd /mnt/nfs
mkdir hello
cd hello

4.使用Gedit软件编辑hello.c程序

gedit  hello.c

5.输入源代码:

#include<stdio.h>
int main()
{
printf("hello!this is woozi9600LL的博客!\n");
return 0;
}

6.在ubuntu shell终端先进入hello程序目录:

cd   /mnt/nfs/hello

7.输入编译链接命令:

gcc  hello.c  -o  hello

此时可能会有提示命令安装gcc编译器,按照提示输入命令sudo apt install gcc
,等待下载安装完成即可。
8.运行执行文件:

./hello

在这里插入图片描述
到此就成功配置好Ubuntu交叉编译环境了。

三、总结

过程还算比较简单,遇到问题时多查查资料大多能解决。

参考链接

树莓派创建用户
C语言断言assert-从源码解析到熟练使用
【Linux Note】scp 命令:实现两台Linux系统之间传输文件
配置Ubuntu交叉编译环境

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-06-21 21:33:29  更:2022-06-21 21:33:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 23:55:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码