Linux的初步学习(3)

来源:互联网 发布:淘宝退货官方寄快递 编辑:程序博客网 时间:2024/06/05 16:31

2017年11月10日

这里接着(2)继续

对于make与Makefile :make命令运行时,须要一个 Makefile 文件,以告诉make命令须要怎么样的去编译和链接程序。
                                    一个Makefile文件包含五个方面的内容:

                                                        1、具体规则  2、隐含规则    3、定义变量    4、指令    5、注释      

                                     隐含规则能够告诉make使用传统的标准方法完成任务。

                                     make工具的基本用法如下:

                                               make [-C dir] [-f file] [target ...]
                                               -C dir:   执行时进入dir目录,默认是当前目录
                                               -f file:  使用file作为Makefile
                                              target:   要完成的目标,目标在Makefile中定义,默认是定义的第1个目标      

                                     规则的基本格式是:

                                                           target: dependency
                                                           (Tab字符)command
                                                           target(目标): 通常是要产生的文件的名称
                                                           dependency(依赖): 指用来输入从而产生目标的文件
                                                           command(命令): 是make执行的动作,一个规则可以有多条命令,每个命令占一行。命令行的第一个字符是Tab。     

                                                例如:

                                                           先vim hello.c 再vim print.c  最后vim Makefile:

                                                              target=hello

                                                              object=hello.o  print.o

                                                              CC=gcc

           

                                                              $(target):$(object)

                                                              $(CC)  $(object)  -o $(target)


                                                              .PHONY:clean                   (设置伪目标 防止被清除  )  

                                                              clean:

                                                              rm *.o $(target)

                                       补充:$后面只能加(),只对于Makefile.

                                    程序头文件中 <>表示在系统指定目录中找

                                    “ ”表示在当前目录中找


对于GDB: GDB是GNU的调试工具,它可以跟踪被调试的程序,进行设置断点、单步执行等操作。

                   步骤:

                            被调试的应用程序在编译时最好使用-g参数将调试信息编入目标文件中:
                                        gcc -g app.c -o app
                            用以下命令启动对程序app的调试:
                                        gdb app
                            如果程序app运行时需要参数,则用以下命令:
                                        gdb --args app arg1 arg2 # arg1和arg2被视为app的参数,而不是gdb的参数   

                     常用命令:list    l   列出源码;     break    b    设置断点;  run   r   运行;   

                                       continue  c  从停止处继续运行程序;    

                                       next   n  向前执行一句(不进入被调用函数中); step   s   向前执行一句(可进入被调用函数中);

                                       return  ret  从当前函数返回;    printf  p  显示变量或表达式的值;

                                       x     x     显示内存值;              quit  q   退出gdb;

Shell: Shell是命令解析器,将用户的输入的指令转化为机器可以运行的程序。

              Linux的Shell种类众多,不同的Shell语言的语法有所不同,所以不能交换使用。

              我们关注的重点是Bash,在一般情况下,人们并不区分 Bourne Shell和Bourne Again Shell,

               所以,在下面的文字中,我们可以看到#!/bin/sh,它同样也可以改为#!/bin/bash。

             利用vi等文本编辑器编写Shell脚本的格式是固定的,如下:
                        #!/bin/sh
                        #comments
                        Your commands go here

               首行中的符号#!告诉系统其后路径所指定的程序即是解释此脚本文件的Shell程 序。
               编辑完毕,将脚本存盘为filename.sh,文件名后缀sh表明这是一个Bash脚本文件。

                            执行脚本的时候,要先将脚本文件的属性改为可执行的: chmod +x filename.sh
                            执行脚本的方法是:   ./filename.sh

                 对于echo :  echo  $#:传入脚本的命令行参数个数
                                    echo  $*:所有命令行的参数值,在各个参数值之间留有空格
                                    echo  $0:命令本身(shell文件名)
                                    echo  $1:第一个命令行参数
                                    echo  $2:第二个命令行参数

                  例如:#! /bin/sh

                             a="hello world"      (注意不要有空格)

                             echo  "this is ${a}"

                             echo $0

                             echo $1

                             echo $2

                             echo $*

                             echo $#

                            保存退出 ,再sh xx.sh a b c d e     (sh 是授予权限运行)

                             结果是   this is hello world

                                           xx.sh

                                           a

                                           b

                                           a b c d e

                                           5

                      Shell中 -f 判断文件是否存在  -d 判断目录是否存在








原创粉丝点击