1.概要
2.内容
1.问题处理
topeet@ubuntu:~/cq/hellword$ sudo make
make -C /home/topeet/lnx/linux-5.10.198 M=/home/topeet/cq/hellword modules #make操作
make[1]: 进入目录“/home/topeet/lnx/linux-5.10.198”
make[1]:aarch64-none-linux-gnu-gcc:命令未找到
CC [M] /home/topeet/cq/hellword/helloworld.o
/bin/sh: 1: aarch64-none-linux-gnu-gcc: not found
make[2]: *** [scripts/Makefile.build:286:/home/topeet/cq/hellword/helloworld.o] 错误 127
make[1]: *** [Makefile:1832:/home/topeet/cq/hellword] 错误 2
make[1]: 离开目录“/home/topeet/lnx/linux-5.10.198”
make: *** [Makefile:8:all] 错误 2
解决方法:
从您提供的错误信息来看,编译过程中遇到了几个问题:
-
交叉编译工具链未找到:
错误信息显示aarch64-none-linux-gnu-gcc: command not found
,这意味着您的系统中没有安装用于 aarch64 架构的交叉编译工具链。您需要安装这个工具链才能正确编译面向 aarch64 架构的内核模块。 -
Makefile 配置问题:
您的 Makefile 可能没有正确配置,或者没有正确地指向内核源代码树和模块源代码目录。但是,从您提供的命令来看,您已经手动指定了这些路径,所以问题可能不在这里。 -
环境变量设置:
如果您的系统默认没有设置PATH
环境变量来包含交叉编译工具链的路径,您可能需要在编译之前手动设置它。
为了解决这个问题,您可以尝试以下步骤:
-
安装交叉编译工具链:
对于 aarch64 架构,您可能需要安装aarch64-linux-gnu-gcc
而不是aarch64-none-linux-gnu-gcc
(除非您确实有一个名为aarch64-none-linux-gnu-gcc
的特定工具链)。您可以使用包管理器来安装它,例如在 Ubuntu 上:sudo apt-get update
sudo apt-get install gcc-aarch64-linux-gnu
或者,如果您正在使用一个特定的交叉编译工具链包,请确保按照该包的说明进行安装。
-
检查 Makefile:
确保您的 Makefile 中没有硬编码的路径或错误的变量设置。如果您是从其他地方复制的 Makefile,请确保它适用于您的环境和内核版本。 -
设置环境变量:
如果交叉编译工具链已安装但不在默认路径中,您可以将其路径添加到PATH
环境变量中:export PATH=$PATH:/path/to/your/cross-compiler
替换
/path/to/your/cross-compiler
为实际的交叉编译工具链路径。 -
重新运行 make 命令:
在解决了上述问题后,重新运行make
命令,确保使用正确的交叉编译工具链和参数。 -
检查内核源代码树:
确保您的内核源代码树是完整的,并且与您正在编译的模块版本兼容。
如果您遵循了上述步骤但仍然遇到问题,请检查是否有其他依赖项缺失或配置错误,并考虑在内核开发社区或相关论坛上寻求帮助。
2.linux 删除文件命令
在Linux中,删除文件的命令主要是rm
(remove的缩写)。使用这个命令时,你需要指定想要删除的文件名或文件路径。以下是一些基本的用法:
-
删除单个文件:
rm 文件名
例如,要删除名为
example.txt
的文件,你可以使用:rm example.txt
-
删除多个文件:
rm 文件名1 文件名2 ...
例如,要同时删除
example1.txt
和example2.txt
,你可以使用:rm example1.txt example2.txt
-
删除目录中的所有文件(但保留目录本身):
如果你想删除目录中的所有文件和子目录,可以使用rm
命令与通配符*
结合:rm 目录名/*
例如,要删除
documents/
目录中的所有内容,但保留documents/
目录本身,你可以使用:rm documents/*
-
递归删除目录及其内容(包括目录本身):
rm -r 目录名
或者,使用
-rf
选项来强制删除而不提示确认:rm -rf 目录名
例如,要递归地删除
documents/
目录及其所有内容,你可以使用:rm -r documents/
或者,不提示确认地删除:
rm -rf documents/
注意:
- 使用
rm
命令时要非常小心,特别是使用-rf
选项,因为它会永久删除文件和目录而不提示确认,无法恢复。 - 在默认情况下,
rm
不会删除目录。要删除目录,你需要使用-r
(递归)选项。 - 在一些系统中,为了安全起见,
rm
命令可能会配置为别名,例如rm -i
,以在删除前提示确认。你可以通过运行alias
命令来检查是否有这样的别名设置。
3. vi 常用命令
VI(Visual Interface)是一款在Unix/Linux环境下广泛使用的文本编辑器,以其强大的功能和高效的编辑速度而受到程序员的青睐。VI编辑器提供了丰富的命令,用于文本的打开、编辑、搜索、替换、删除、复制、粘贴、保存和退出等操作。以下是VI编辑器的一些常用命令:
一、打开和创建文件
vi 文件名
:打开或新建文件,并将光标置于第一行首。如果文件已存在,则打开该文件;如果文件不存在,则创建一个新文件。vi +n 文件名
:打开文件,并将光标置于第n行首。vi + 文件名
:打开文件,并将光标置于最后一行首。vi +/pattern 文件名
:打开文件,并将光标置于第一个与pattern匹配的字符串处。vi -r 文件名
:恢复上次编辑时因系统崩溃而未保存的文件。
二、移动光标
h
:光标左移一个字符。j
:光标下移一行。k
:光标上移一行。l
:光标右移一个字符。w
:光标跳到下一个字的开头。e
:光标跳到下一个字的字尾。b
:光标回到上一个字的开头。0
:光标移到当前行的行首。$
:光标移到当前行的行尾。G
:光标移到文件的最后一行。nG
:光标移到文件的第n行。Ctrl+B
:屏幕往后移动一页。Ctrl+F
:屏幕往前移动一页。Ctrl+U
:屏幕往后移动半页。Ctrl+D
:屏幕往前移动半页。
三、插入文本
i
:在当前光标位置前插入文本。I
:在当前行的行首插入文本。a
:在当前光标位置后插入文本。A
:在当前行的行尾插入文本。o
:在当前行的下一行插入新行并开始编辑。O
:在当前行的上一行插入新行并开始编辑。
四、删除文本
x
:删除光标所在位置的字符。X
:删除光标所在位置的前一个字符。dd
:删除光标所在行。ndd
:删除光标所在行及其后的n-1行。dw
:删除光标所在位置的字到字尾。d$
:删除光标所在位置到行尾的内容。d0
:删除光标所在位置到行首的内容。
五、复制和粘贴文本
yy
:复制光标所在行。nyy
:复制光标所在行及其后的n-1行。p
:将缓冲区内的内容粘贴到光标所在位置。P
:将缓冲区内的内容粘贴到光标所在位置的前一行。
六、搜索和替换文本
/pattern
:从光标开始处向文件尾搜索pattern。?pattern
:从光标开始处向文件首搜索pattern。n
:在同一方向重复上一次搜索命令。N
:在反方向上重复上一次搜索命令。:s/p1/p2/g
:将当前行中所有p1替换为p2。:n1,n2s/p1/p2/g
:将第n1至n2行中所有p1替换为p2。:%s/p1/p2/g
:将文件中所有p1替换为p2。
七、保存和退出文件
:w
:保存当前文件。:w 文件名
:将当前文件另存为指定文件。:q
:退出VI编辑器(如果文件已修改,则无法退出)。:q!
:不保存修改,强制退出VI编辑器。:wq
:保存修改并退出VI编辑器。:x
:保存修改并退出VI编辑器(与:wq
相同,但仅在文件有修改时才保存)。
八、其他常用命令
u
:撤销上一次操作。Ctrl+R
:重做上一次撤销的操作。.
:重复上一次执行的命令。v
:进入可视模式,选中文本。V
:进入可视行模式,选中整行文本。Ctrl+V
:进入可视块模式,选中矩形区域文本。:set nu
:显示行号。:set nonu
:取消显示行号。
VI编辑器的命令非常丰富,这里只列出了一些最常用的命令。熟练掌握这些命令,可以大大提高文本编辑的效率。
4.vi 的编辑状态
VI编辑器在Linux系统中是一款非常受欢迎的文本编辑器,以其简洁而强大的功能著称。VI编辑器主要有三种状态或模式,这些模式帮助用户在不同任务间切换,提高编辑效率。以下是VI编辑器的三种主要状态及其功能:
-
命令模式(Command Mode)
- 这是VI编辑器启动后的默认模式。在此模式下,用户可以输入各种命令来控制编辑器的行为,如移动光标、删除文本、复制文本等。
- 用户可以通过按
Esc
键从其他模式返回到命令模式。 - 常用命令包括:
h
(左移光标)、j
(下移光标)、k
(上移光标)、l
(右移光标)、dd
(删除当前行)、yy
(复制当前行)等。
-
插入模式(Insert Mode)
- 在插入模式下,用户可以输入文本到文件中。这是进行实际编辑工作的模式。
- 用户可以通过在命令模式下按
i
(在当前光标位置前插入文本)、a
(在当前光标位置后插入文本)、o
(在当前行的下一行插入新行并开始编辑)等键进入插入模式。 - 要退出插入模式并返回到命令模式,用户可以按
Esc
键。
-
底行模式(Last Line Mode,也称为底线命令模式)
- 底行模式允许用户执行一些高级命令,如保存文件、退出编辑器、设置编辑环境等。
- 用户可以通过在命令模式下按
:
(冒号)键进入底行模式。 - 常用命令包括:
:w
(保存文件)、:q
(退出编辑器)、:wq
(保存文件并退出编辑器)、:set nu
(显示行号)等。
此外,值得注意的是,虽然有时为了简化,用户可能会将底行模式视为命令模式的一部分,但严格来说,它们是VI编辑器中两个独立且功能不同的模式。
总的来说,VI编辑器的这三种状态为用户提供了灵活而强大的文本编辑功能。通过熟练掌握这些模式及其之间的切换,用户可以高效地进行文本编辑工作。
5.vi 如何删除内容
在VI编辑器中删除内容是一个常见的操作,可以通过一系列命令来实现。以下是在VI编辑器中删除内容的一些常用方法:
一、删除单个字符
- x命令:在命令模式下,将光标定位到要删除的字符上,然后按下
x
键即可删除该字符。
二、删除单个单词
- dw命令:在命令模式下,将光标定位到要删除的单词上,然后按下
dw
键即可删除该单词。如果光标在单词中间,它会从光标位置删除到单词的末尾。
三、删除整行
- dd命令:在命令模式下,将光标定位到要删除的行首,然后按下
dd
键即可删除整行。被删除的行可以被粘贴到其他地方。
四、删除多行
- ndd命令:在命令模式下,将光标定位到要删除的起始行上,然后按下
ndd
键,其中n为要删除的行数。例如,要删除3行,则按下3dd
键。
五、删除到行尾
- D命令:在命令模式下,将光标定位到要删除的位置上,按下
D
键即可删除光标位置到行尾的内容。注意,D
是大写字母。
六、删除到行首
- d0命令:在命令模式下,将光标定位到要删除的位置上,按下
d0
键即可删除光标位置到行首的内容。注意,0
是数字零。
七、删除多个字符
- nx命令:在命令模式下,按下
nx
键即可删除从当前位置开始的n个字符。例如,要删除5个字符,则按下5x
键。
八、删除指定范围内的字符
- 进入可视模式:在命令模式下,按下
v
键进入可视模式,然后使用上下左右箭头键选中要删除的字符范围。 - 执行删除操作:在选中要删除的字符范围后,按下
d
键即可删除选中的字符。
九、删除选中文本
- 进入可视模式:同样地,可以通过
v
键进入可视模式,然后使用移动命令选择要删除的文本块。 - 执行删除操作:在选中要删除的文本块后,按下
d
键即可删除该文本块。
十、撤销删除操作
- u命令:如果不小心删除了不该删除的内容,可以使用
u
命令来撤销上一次的删除操作。在命令模式下按下u
键即可。
需要注意的是,以上所有删除操作都是在命令模式下进行的。在进入VI编辑器后,默认处于命令模式。如果当前不在命令模式,可以通过按下Esc
键来返回到命令模式。
此外,VI编辑器还提供了其他更高级的删除命令和选项,用户可以根据具体需求进行学习和掌握。在进行删除操作时,请务必小心谨慎,以免误删重要内容。建议在执行删除操作之前先备份文件,以确保数据安全。
6.vi 插入剪切板的内容
在VI编辑器中插入剪切板的内容可以通过以下几种方式实现:
一、使用系统剪切板
如果你的VI编辑器(如Vim)支持系统剪切板,你可以直接在插入模式下粘贴剪切板中的内容。
- 进入插入模式:在VI编辑器中,按
i
键进入插入模式。 - 粘贴剪切板内容:在插入模式下,你可以使用系统默认的粘贴快捷键来粘贴剪切板中的内容。在大多数Linux系统中,你可以按
Shift+Insert
键来粘贴剪切板中的内容。
二、使用VI编辑器的寄存器功能
VI编辑器提供了寄存器功能,你可以将文本复制到寄存器中,然后在需要的地方粘贴。
- 复制文本到寄存器:在命令模式下,你可以使用
yy
命令复制整行文本,或者使用yw
命令复制当前单词。这些命令默认将文本复制到无名寄存器(""
)中。 - 进入插入模式:按
i
键进入插入模式。 - 粘贴寄存器内容:在插入模式下,你可以按
Ctrl+R
键,然后按"
(双引号)键,最后按寄存器名称(如果不指定,则默认为无名寄存器""
)来粘贴寄存器中的内容。例如,要粘贴无名寄存器中的内容,你可以按Ctrl+R
,然后按"
键两次。
三、使用命令行模式粘贴
在VI编辑器的命令行模式下,你也可以粘贴剪切板中的内容。
- 进入命令行模式:在命令模式下,按
:
键进入命令行模式。 - 粘贴剪切板内容:在命令行模式下,你可以使用系统默认的粘贴快捷键来粘贴剪切板中的内容。在大多数Linux系统中,你可以按
Shift+Insert
键来粘贴剪切板中的内容。
注意事项
- 确保你的VI编辑器(如Vim)支持系统剪切板功能。如果不支持,你可能需要通过配置文件(如
.vimrc
)来启用该功能。 - 在使用VI编辑器的寄存器功能时,要注意寄存器名称是区分大小写的。
- 在使用系统剪切板时,要注意不同操作系统和桌面环境可能有不同的默认粘贴快捷键。
总的来说,将剪切板的内容插入到VI编辑器中是一个相对简单的操作,但具体方法可能因VI编辑器的版本和配置而异。如果遇到问题,建议查阅VI编辑器的官方文档或寻求社区的帮助。