Linux學習心得(二)

2021-08-10 13:17:42 字數 1716 閱讀 7173

今天學習了gcc編譯器和gdb除錯工具,初步接觸了shell指令碼

(1)gcc編譯器

整個編譯過程可以分為4個階段

1.預處理:本階段進行標頭檔案展開

2.編譯:檢查語法,翻譯成組合語言

3.彙編:把組合語言翻譯成機器語言

整個編譯過程為:gcc -e test.c -o test.i

gcc -s test.i -o test.s

gcc -c test.s -o test.o

gcc test.o -o test

接下來在命令視窗輸入:./test就可以編譯test.c程式了

(2)gdb除錯工具

在使用gdb除錯時,被除錯的應用程式最會使用-g引數將除錯資訊編入目標檔案中

gcc -g test.c -o test

此時在命令視窗輸入:gdb test就會進入gdb互動介面,在gdb互動介面也有一些常用指令:

list(l)   列出原始碼

break(b)   設定斷點

run(r)  從頭開始執行程式

continue(c)  從停止除繼續執行程式

next(n)  向前執行一句(不進入被呼叫函式)

step(s)  向前執行一句(可進入被呼叫函式)

return(r)  從當前函式返回

print(p

)   顯示變數或表示式的值

x                  顯示記憶體值

quit(q)   退出gdb

(3)shell指令碼

固定格式:#!/bin/bash

執行指令碼時要先修改許可權,一般為 chmod  755  filename.sh

執行指令碼:./filename.shorsh filename.shorbash  filename.sh

$符號:使其後的普通字元作為變數名,如$a表示變數a的值

#符號:注釋符

單引號:被引起的字元全部做普通字元,即全部原樣

雙引號:引號內的內容除$、轉義符\、倒引號`這三個保留特殊功能其他字元均做普通字元

倒引號:引號內的字串當做shell命令列解釋,執行得到的結果取代整個倒引號括起來的部分。

echo指令:$#   命令列引數個數

$*   輸出所有引數

$n  第n個引數

$0  當前程式名

for迴圈語句:

for  變數  in 列表 do

語句1語句2

........

done

case語句:

case  值  in

模式一)  語句1

語句2.........;;

模式二)   

語句1語句2

.........;;

if判斷語句

if  條件

then 

command

elif

then

command

else

command fi

Linux學習心得

一 首先我分享一下我對linux學習過程的幾篇部落格 1.通過反編譯乙個簡單的c程式,解釋堆疊的變化 2.乙個精簡的linux核心分析 3.跟蹤分析乙個簡單的linux核心的執行 4.分析乙個api的呼叫機制 5.分析linux核心建立乙個新程序的過程 6.linux核心如何裝載和啟動乙個可執行程式...

linux學習心得

在使用linux系統時,如要利用一些終端服務。都需要開啟linux中的相應伺服器。其中可以利用chkconfig list 或 chkconfig list more命令檢視服務是否起動。如檢視ftp服務 可用chkconfig list grep vsftpd 如果其狀態是關閉的,就要用chkco...

Linux學習心得

說起linux,就難免讓人想起windows 但反過來,談起windows,卻不一定會讓人想起linux,可見linux還有很長的一段路要走 基本上都會將linux與windows放到一起來比較,比如哪個系統操作更方便,哪個系統更加安全,哪個系統使用更加高效等等。拿桌面端來講,自然是windows系...