Linux嵌入式入门笔记(一)

Linux常用命令

  1. ls 显示文件;ls -a 显示所有文件,包括隐藏文件;ls -l 显示文件的详细信息;ls -al 显示所有文件并显示详细信息。
  2. cd 切换目录(table可以补全输入,如果命令唯一);cd / 返回根目录;…/ 返回上一级目录。
  3. pwd 显示当前路径。
  4. uname 系统信息查看命令 ;-a 查看全部信息。
  5. clear 清屏。
  6. cat 查看文件内容。
  7. sudo 切换用户身份命令(临时);sudo su 切换用户身份。
  8. touch 创建文件命令(后加文件名)。
  9. cp 拷贝文件(后加原始文件名再新的文件名)。
  10. rm 删除命令;-f 为只读也直接删除;-rf 删除文件夹;rmdir 删除文件夹。
  11. mkdir 创建文件夹。
  12. mv 移动文件命令(后加新的名字可重命名文件)。
  13. ifconfig 显示网络配置信息;down 关闭网卡;up 打开网卡。
  14. reboot 重启命令。
  15. poweroff 关机命令。
  16. sync 数据同步写入磁盘命令。
  17. find 查找文件命令;-name 根据名字查找文件。
  18. grep 查找内容命令;-nr 显示行号 ;-ir 忽略大小写。Ctrl+C 停止命令。
  19. du 文件夹大小查看命令;-sh 以可读的方式查看。
  20. df 磁盘空间检查命令。
  21. gedit 使用gedit打开某个文件。
  22. ps 当前系统进程查看命令。
  23. top 进程实时运行状态查看命令。
  24. file 文件类型查看命令。
  25. chmod 修改文件权限;777 打开全部权限。

vim编辑器的使用

vi打开文件/etc/vim/vimrc 最后添加:

​ set ts=4 //设置Tab为4个空格 默认为8个空格

​ set nu //设置行号

编译C程序

使用gcc编译器编译c程序。

gcc [选项] [文件名]

-c 只编译不链接为可执行文件,把.c文件编译为.o的目标文件。

-o 编译指定输出文件名,默认为a.out。./ 启动可执行文件

make工具和makefile文件

利用make工具可以自动完成编译工作,这些工作包括:

  • 如果修改了某几个源文件,则只重新编译这几个源文件
  • 如果某个头文件被修改了,则重新编译所有包含该头文件的源文件

利用这种自动编译可以大大简化开发工作,避免不必要的重新编译。make工具通过一个称为Makefile的文件来完成并自动维护编译工作,Makefile文件描述了整个工程的编译、连接规则。

#编写例程:创建文件Makefile
main: main.o input.o calcu.o
	gcc -o main main.o input.o calcu.o
main.o:main.c
	gcc -c main.c
input.o:input.c
	gcc -c input.c
calcu.o:calcu.c
	gcc -c calcu.c 
clean:
	rm *.o
	rm main 

Makefile基本语法

规则格式

目标文件:依赖文件集合

(Tab) 命令

  • make 编译文件
  • make clean 清理编译的文件

入门:make工具与Makefile文件

变量

#Makefile变量的使用
objects = main.o input.o calcu.o
main:$(objects)
    gcc -o main $(objects)

赋值符

“=“ 变量的值取决于它所引用的变量的最后一次有效值。

”:=“ 变量使用当前定义,不会使用后面的定义。

”?=“ 如果前面没有赋值就使用当前赋值,如果有就使用前面的值。

”+=“ 后面追加内容。

模式规则

%.o:%.c

​ 命令

自动化变量

自动化变量 描述
$@ 表示规则中的目标文件集。在模式规则中,如果有多个目标,那么,"$@"就是匹配于目标中模式定义的集合。
$% 仅当目标是函数库文件中,表示规则中的目标成员名。例如,如果一个目标是"foo.a(bar.o)",那么," %"就是"bar.o"," @“就是"foo.a”。如果目标不是函数库文件(Unix下是[.a],Windows下是[.lib]),那么,其值为空。
$< 依赖目标中的第一个目标名字。如果依赖目标是以模式(即"%")定义的,那么"$<"将是符合模式的一系列的文件集。注意,其是一个一个取出来的。
$? 所有比目标新的依赖目标的集合。以空格分隔。
$^ 所有的依赖目标的集合。以空格分隔。如果在依赖目标中有多个重复的,那个这个变量会去除重复的依赖目标,只保留一份。
$+ 这个变量很像"$^",也是所有依赖目标的集合。只是它不去除重复的依赖目标。
$* 这个变量表示目标模式中"%“及其之前的部分。如果目标是"dir/a.foo.b”,并且目标的模式是"a.%.b",那么,"$*“的值就是"dir/a.foo”。

优化后Makefile文件代码

objects = main.o input.o calcu.o
main: $(objects)
    gcc -o main $(objects)
 %.o:%.c
	gcc -c $<
clean:
	rm *.o
	rm main

伪目标

#当目录下有相同名字(clean)文件时,make clean 并不能执行
clean:
	rm *.o
	rm main
        
#声明伪目标防止出现上述情况
.PHONY:clean
clean:
	rm *.o
	rm main

条件判断

<条件关键词>
	<条件为真时执行的语句>
endif
-----------------------
<条件关键词>
	<条件为真时执行的语句>
else
	<条件为假时执行的语句>
endif

条件关键字: ifeq(判断是否相等)、ifneq、ifdef、ifndef

函数使用

Makefile函数使用_常见函数

shell脚本

//创建文件xxx.sh
#!/bin/bash	//第一行必须要写成这样
echo "hello world!"	//可以编写多个命令 echo打印输出
  • read 读取变量;-p 可以读取多个变量

  • $((表达式)) 数值计算,仅支持整形

  • test 用于查看文件是否存在、权限等信息,可以进行数值,字符,文件三方面的测试。-e 查看文件是否存在。

  • &&和||命令

    • cmd1 && cmd2 当cmd1执行完并且正确,那么cmd2开始执行;如果cmd1执行完毕错误,那么cmd2不执行。
    • cmd1 || cmd2 当cmd1执行完并且正确,那么cmd2不执行;反之cmd2执行。
  • [ ]判断符 里面用==或!= 里面字符和变量需要加”“

  • 默认变量

    • $0~$9:表示shell脚本的参数,包括shell脚本命令本身,shell脚本命令本身为$0
    • $#:#表示最后一个参数的标号
    • $@:表示$1、$2、$3… 全部参数
  • 条件判断

    • if 条件判断;then //成立时执行的语句 fi

    • if 条件判断;then //成立时执行的语句 else //不成立时执行的语句 fi

    • if 条件判断;then //成立时执行的语句 elif 条件判断;then //成立时执行的语句 else //不成立时执行的语句 fi

    • //编写示例
      if <条件判断>;then
      	//条件成立时执行的语句
      	exit 0 //退出
      fi
      
    • //case语句
      case $变量 in
      	"第一个变量内容")
         	 	程序段
        	 	::	//表示该程序块结束
      	"第二个变量内容")
          	程序段
          	::
      esac
      
  • 脚本函数 function fname(){ //函数代码段 } //调用不需要加() 传参不是加在() 参数直接写在后面

  • 循环

    • while [条件] do //循环开始代码段 done //条件不成立时结束
    • for var in con1 con2 con3… do //循环代码段 done
    • for((初始值;限制值;执行步长)) do //循环代码段 done

你可能感兴趣的:(笔记,linux,makefile,shell,arm)