本帖最后由 随风飘动 于 2020-8-27 19:17 编辑
做了三年STM32 ,430相关的软件开发,最近准备转LINUX,买了正点原子的阿尔法LINUX开发板,刚到货,包装好看,板子也很周正,下班后回家试一试。接下来半年准备入门Linux,按照左盟主的教程坚持下去,占个地方做笔记了:2020-08-26 wsqxfx
2020-08-25
第一天:安装虚拟机,熟悉基本指令操作
昨晚开始安装虚拟机,过程按照左盟主的教程基本没有问题,只有在添加镜像的之后无法启动,提示的信息如下,一直弄到12点菜弄好
问题点:vmware虚拟机安装时提示IntelVT-x处于禁用状态
解决办法:电脑,在启动时按Del键进入BIOS,在BIOS Features下,按↓方向键选择Intel Virtualization Technology,按Enter键,选择Enabled,回车,重启即可;
该死的地方出来了,我台式机电脑打死也进不去BIOS,折腾了很久,网上的方法用遍了也没折腾出来,时间不早了,我就用我的笔记本安装一遍试了一下,进去了BIOS,然后安装也顺利了,今晚下班回去再把台式机的问题解决一下。
2020-08-26 wsqxfx
第二天开始熟悉了基本指令,编写简单的程序代码:
问题点:
1、安装软件使用 sudo apt-get install minicom 的时候无法下载软件,软件提示信息
解决办法:
重新连接一下之后就可以下载安装了
安装VIM的时候会出现 安装及其缓慢的现象,有的可能是网络差,但是大部分原因还是没有重新刷新有线连接,我建议应该在每次安装之前都刷新一下网络的链接
2、vim的使用,a进入输入模式,ESC进入保存模式,CTRL+S:不是保存,是关闭终端,需要CTRL+Q重庆打开终端 Vim编辑完成之后,退出:wq的是无法保存
解决办法:目前来说解决办法是权限不够,sudo vim test.txt 然后wq就可以保存了
原因是我cd到了根目录下去了,所以拥有权都是boot,在普通路径下wq是没有问题的,不需要加sudo。
一般遇到权限不够的情况下:增加sudo 就可以暂时以boot身份去执行了
难点||知识点(我比较不熟悉的):
1、磁盘的分区在Linux中叫做 挂载点 ,挂载点就是将一个硬盘的一部分做成文件夹的形式,这个文件夹的名字就是挂载点,在Linux中用户看不到C D盘的概念,只能看到以文件夹形式存在的挂载点
2、二、Linux c编程:c编程的基本方法,GCC和Makefile的使用和编写
1、vi编辑器的TAB键为8空格,我们改为4空格 vi /etc/vim/vimrc 末尾 set ts=4
Vim 不显示行号,同样在最后 set nu;最后wq保存,如果提示只读,在指令之前添加sudo,或者更改用户的权限chmod xxx
2、GCC,Linux下的C语言编辑器, gcc mian.c -o main -c 只编译不链接 -o 用于指定编译结束后的输出文件名 -O 对程序进行优化编译,执行效率高。 编译的流程:预处理、编译、汇编、链接------这个面试的时候有人问过我,我回答的不是很清楚,所以讲这个流程整理清楚一下; 预处理:展开所有的头文件,替换程序中的宏,解析条件编译并添加到文件中 编译:将预处理的代码编译成汇编代码 汇编:将汇编语言文件编程成二进制目标文件 链接:将二进制文件链接在一起,形成最终的可执行的文件。
3、Makefile:极其重要 目标文件根据它所依赖的文件的规则产生,如果要更新目标,就要更新它的依赖文件,如果更新了依赖文件,那么目标文件就会被更新,简单的说就是一个目标文件依赖于其他文件,比如可执行文件main的生成 由 main.0 1.0 2.o这些依赖文件通过规则产生的--------------目前这个还没有学完,晚上回去继续学习
20200827_wsqxfx:
今天主要是熟悉了Makefile&&学习Makefile的语法
一、Makefile的定义:我看了很多的说法,包括左盟主的讲解,我自己的理解:Makefile是make软件所使用的文件,它指明了编译的规则,一个目标文件(可执行文件)是由他的依赖文件按照规则产生的,使用make工具可以自动完成编译,避免不必要的重复。
二、Makefile的语法
1、Makefile的规则格式:目标,依赖文件(可能是多个),命令 组成的。
举个例子:main: main.o 1.o 2.o
gcc -o main main.o 1.o 2.o
注意:命令列表中的每条命令都要以TAB键开始,不能空格,make会以每个以TAB开头的命令创建一个进程去执行
make的执行过程:make工具就是在Makefile中一层一层的查找依赖关系,并执行相应的命令,最终编译出最终的可执行文件
Makefile中规则用来描述在什么情况下用什么命令来构成一个特定的文件。
左盟主举的例子极其形象而且通俗易懂,Makefile比作食材,make比作厨师,GCC比作刀具,生成的最终产物就是 食物,通俗易懂,手动点赞啊!!!
二、Makefile变量
1、注释是用 #开头,这个和C语言不一样,不用// /**/
#Makefile变量的使用
objects = main.o 1.o 2.o
main: $(objects)
gcc -o main $(objects)
2、变量的引用使用$ $(变量)
3、赋值符有四个 =, :=, ?=, +=
=:赋值之后,可以改变被赋值的参数的值
:=: 不会使用后面定义的变量,只能使用前面已经定义好的
?=:如果前面没有被赋值过,那么久赋值,否则就等于前面赋值
+=:变量追加,在原先的字符串上增加
三、模式规则
如果每一个c文件都要写一个对应的规则,那么久太麻烦了,通过模式规则就可以使用一条规则将所有的.c文件编译成.c %.o:%.c,在模式规则中至少在目标定义中药包含%,否则就是一般规则 %表示热议长度的字符串,类似于通配符*.c
四、Makefile自动化变量
在规则模式中,通过一行命令从不同的依赖文件中产生对应的目标,自动化就是完成这个功能的,所谓的自动化变量就是一个变量会把模式中所定义的一系列的文件自动的挨个取出,直至所有的符合模式的文件都取完。
常用的:$< $@ $^
五、Makefile伪目标
一般的目标是规则的产物,要生成的文件,但是伪目标只是为了执行规则下的命令。使用伪目标的意义在于避免目标和文件产生冲突
.PHONY:clean phony:伪造的意思
问题出现 了:
问题描述:在make clean之后,在make一遍之后报错了 第8行的代码是 gcc -c &< 正在查找如何解决
解决了:自己不够小心,gcc -c $< 我打错了 gcc -c &<,因为没有报错,所以我没查出来,论坛里的大佬帮我看出来了,谢谢
六、Makefile条件判断
ifeq ifneq ifdef ifndef
七、Makefile函数使用
1、subst:完成字符串的替换 $(sub www,WWW,my name is WWW)
2、patsubst:模式字符串替换 $(patsunst %.c,%.o,a.c b.c c.c):将字符串中“a.c b.c c.c”中所有符合“%.c”的字符串替换成“%.o”
3、dir:返回目录部分,$(dir<src/a.c>),提取目录部分,就是/src
4、notdir:去除目录部分,提取文件名$(notdir<src/a.c>),返回a.c
5、foreach
6、wildcard $(wildcard *.c):获取目录下的所有.c文件
至此:ALPHA第一篇已经学完了
开始学习第二篇:裸机开发篇......
|