嵌入式Linux开发的环境与命令介绍
一.嵌入式介绍
近年来“嵌入式”这一词的身影经常出现在大众视野中,许多人都好奇“嵌入式“到底是什么?在此我想做一个简单的解释。
嵌入式系统就是一种嵌入到特定设备内部,为完成该设备核心功能而设计的专用计算机系统。它通常与硬件紧密结合,并非通用计算器。再通俗点说,嵌入式就是在硬件与软件之间加上操作系统,目的是解决软硬件的高耦合度,提高软件的可移植性。
耦合度是指硬件与软件之间相互依赖,相互关联的紧密程度,依赖越强则耦合度越高,反之则越低。举个例子说,一支笔有笔帽和笔身两部分构成,把笔帽比作硬件,笔身比作软件。当笔帽发生更换,为了这支笔可以继续使用,我们就要将笔身换成与笔帽适配的笔身。即硬件发生了变化,软件就要随之发生改变。
移植性是指软件在不同的硬件平台,操作系统或环境之间进行迁移时,所需修改的工作量大小。修改的工作量越小,移植性越好,反之则越差。
可以用一张图搞清楚嵌入式

二.操作系统分类
一、商用属性分类
-
商用系统
- VxWorks(应用于收银机、工业控制等领域)
- WinCE(常见于出租车计价器、POS机等商用设备)
-
免费系统
- Linux
- MCLinux
二、实时性分类
-
硬实时系统
- VxWorks(必须在严格时限内完成任务)
-
软实时系统
- WinCE
- RTLinux
-
无实时系统
- Embedded Linux
注:实时性指系统能够在规定时间内可靠完成任务的能力
三.Linux操作系统简述以及选择Linux的原因
Linux是一款开源的类Unix操作系统,由林纳斯·托瓦兹(Linus Torvalds)于1991年开发。它借鉴了UNIX的设计思想,继承了其多任务、多用户等特性,同时以开源免费的模式发展,成为服务器、嵌入式等领域的主流系统之一,是UNIX的“开源继任者”。
选择Linux的原因
1.开源与免费
Linux作为开源操作系统,无需支付许可费用,降低了开发成本。嵌入式系统通常对成本敏感,开源特性允许开发者自由修改和优化内核,满足特定需求。
2.高度可定制性
Linux内核支持模块化配置,可根据嵌入式设备的资源限制裁剪不必要的功能(如GUI、网络协议栈)。通过交叉编译工具链,能针对不同硬件架构(ARM、MIPS等)灵活适配。
3.强大的社区与工具链
成熟的开发工具(GCC、GDB、Make)和调试手段(JTAG、串口日志)简化了开发流程。社区资源(如GitHub、Stack Overflow)提供了大量现成解决方案和补丁。
4.跨平台与长周期支持
Linux支持从微控制器到多核处理器的多种硬件平台,统一的API接口(POSIX)便于代码移植。长期支持版本(LTS)保障了系统维护的可持续性。
四.工具下载
在做嵌入式Linux开发时,我们需要多种工具的支持,我选择的是虚拟机来安装Linux发行版
虚拟机可以使用像VMware,Oracle VituralBox,VirtualPC等,Linux发行版可以选择Ubuntu。
下面附上工具的下载地址与安装指导:
1.虚拟机安装
1.VMware官网下载:www.vmware.com
2.安装教程:VMware Workstation Pro 17官网下载安装教程_vmware17pro下载-CSDN博客
2.Ubuntu安装
1.Ubuntu官网:下载Ubuntu桌面系统 | Ubuntu
(尽量选择LTS版本,LTS版本是长期支持的,一般为5年)
2.镜像包安装:
1.国内镜像:http://mirrors.163.com/ubuntu-releases/
2.清华大学开源软件镜像站:ubuntu | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
五.Linux基本命令介绍
1.Linux命令分类:
Linux命令按功能分为以下几类:
- 用户管理命令
- 文件操作命令
- 设备管理命令
- 网络管理命令
- 进程管理命令
- 内存管理命令
2.用户管理命令及使用说明
1. adduser
- 功能:交互式添加用户(无需手动设置用户信息)
- 格式:
adduser 用户名 
2. useradd
- 功能:非交互式快速添加用户(需手动添加用户信息)
- 格式:
useradd 用户名
3. deluser/userdel
- 功能:删除用户账户(deluser交互,userdel非交互)
- 格式:
deluser 用户名或userdel 用户名 
4. usermod
- 功能:修改用户属性配置
- 使用格式:
- 修改用户名:
usermod -l 新用户名 原用户名 - 变更主用户组:
usermod -g 新用户组 用户名 - 设置用户主目录:
usermod -d 新主目录 用户名 - 追加附属用户组:
usermod -aG 组名 用户名(保留原组) 
- 修改用户名:
5. sudo
- 功能:以超级用户权限执行命令
- 格式:
sudo 命令
6. last
- 功能:查询用户登录历史
- 使用方式:
last:查看所有用户登录记录last 用户名:查看指定用户登录记录
3.文件操作命令及其使用说明
一、创建文件与目录
-
touch:创建新的空文件或更新文件时间戳。例如touch hello.c创建名为hello.c的C源文件。 -
mkdir:创建新目录。使用-p参数可递归创建多级目录,例如mkdir -p project/src一次性创建嵌套目录。
二、编辑源代码
-
nano:简单易用的文本编辑器,适合初学者。操作方式直观:Ctrl+O保存,Ctrl+X退出。 -
vim:功能强大的编辑器。常用操作:按i进入编辑模式;按Esc退出编辑模式,输入:wq保存并退出,输入:q!不保存强制退出。 -
gedit:图形化文本编辑器,例 gedit hello.c
三、编译程序 (GCC)
-
基础编译:
gcc 源码文件 -o 可执行文件名,例如gcc hello.c -o hello。若不指定-o选项,默认生成名为a.out的可执行文件。 -
显示警告:建议编译时添加
-Wall选项,如gcc -Wall hello.c -o hello,这有助于发现代码中的潜在问题。 -
调试编译:如需使用调试器(如GDB),需添加
-g选项以包含调试信息,例如gcc -g hello.c -o hello。
四、执行程序
-
运行程序:通过
./可执行文件名执行当前目录下的程序,例如./hello。 -
权限问题:若执行权限不足,可使用
chmod +x 可执行文件名命令为文件添加执行权限。
五、查看文件与输出
-
cat:直接显示整个文件内容,适用于内容较少的文件,例如cat hello.c。 -
less:分页显示文件内容,适合查看日志等大文件。操作方式:空格键向下翻页,b键向上翻页,按q键退出。 -
grep:在文件或程序输出中过滤特定关键词。常与管道|结合使用,例如./hello | grep "error"可以只显示程序输出中包含 "error" 的行。
六、删除文件与目录
-
rm:删除文件,例如rm hello.o。警告:此命令直接删除,不易恢复。 -
rm -r:递归删除目录及其下所有内容,例如rm -r project/。使用此命令需格外谨慎。
7.示例
这里以一个完整例子来演示


4.文件压缩
一、常见压缩格式对比
|
格式 |
扩展名 |
特点 |
|---|---|---|
|
ZIP |
.zip |
打包压缩一体,跨平台支持优秀 |
|
TAR+GZIP |
.tar.gz.tgz |
先打包后压缩,Linux系统通用,兼容性最佳 |
|
TAR+BZIP2 |
.tar.bz2.tbz |
先打包后压缩,压缩比比GZIP更高 |
|
TAR+XZ |
.tar.xz.txz |
先打包后压缩,采用LZMA算法,压缩率极高 |
|
7Z |
.7z |
打包压缩一体,基于LZMA算法,支持加密,压缩率极高 |
|
RAR |
.rar |
打包压缩一体,支持分卷压缩和加密 |
|
GZIP |
.gz |
仅压缩不打包,处理速度快,算法简洁 |
二、格式选择场景建议
-
跨平台传输:推荐使用 .zip 格式,各类操作系统无需额外软件即可解压
-
Linux/Unix环境:
-
通用兼容:选择 .tar.gz,在压缩速度与压缩率间取得良好平衡
-
高压缩需求:选择 .tar.xz(极致压缩)或 .tar.bz2(平衡较优)
-
-
极限压缩:优先考虑 .7z 或 .tar.xz(适用于对压缩时间不敏感的场景)
-
分卷压缩:推荐使用 .rar 或 .7z 格式
-
单个文件压缩:文本文件或日志压缩可使用 .gz 格式
三、tar命令使用指南
打包压缩命令
-
tar -czvf dir.tar.gz dir/:将目录打包并采用GZIP压缩 -
tar -cjvf dir.tar.bz2 dir/:将目录打包并采用BZIP2压缩 -
tar -cJvf dir.tar.xz dir/:将目录打包并采用XZ压缩
解压缩命令
-
tar -zxvf dir.tar.gz:解压GZIP格式压缩包 -
tar -jxvf dir.tar.bz2:解压BZIP2格式压缩包 -
tar -Jxvf dir.tar.xz:解压XZ格式压缩包
命令选项详解
|
选项 |
功能说明 |
|---|---|
|
-c |
创建新归档文件(create) |
|
-x |
解压已有归档文件(extract) |
|
-t |
列出归档内容清单,不解压(list) |
|
-r |
向已存在归档文件追加文件(append) |
|
-u |
更新归档文件,仅追加比归档内更新的同名文件(update) |
|
-f |
指定归档文件名(必选参数,后须直接跟文件名) |
|
-v |
显示详细处理过程(verbose) |
|
-z |
使用gzip压缩/解压(处理.tar.gz/.tgz文件) |
|
-j |
使用bzip2压缩/解压(处理.tar.bz2/.tbz文件) |
|
-J |
使用xz压缩/解压(处理.tar.xz/.txz文件) |
|
-C <目录> |
改变至指定目录再执行操作(特别适用于指定解压路径或打包路径) |
|
-p |
保留文件原始权限和属性(适用于需要保留权限的备份操作) |
|
--exclude |
排除指定文件或目录,不进行打包 |
|
-k |
解压时不覆盖已存在的文件(keep) |
|
-w |
打包完成后验证归档完整性(verify) |
更多推荐


所有评论(0)