linux基礎學習

2021-07-24 17:36:44 字數 2704 閱讀 8436

vim

命令移動 hjkl

gcc 

-o 生成的名字

-i./include 頭檔案目錄

-d debug 指定巨集

-o 優化程式(+1,2,3)

-wall 輸出警告資訊

-g 新增除錯資訊(gdb) 檔案變大

-e 生成預處理檔案  .i檔案

-s 生成彙編檔案(編譯)  .s檔案

-c 二進位制檔案      .o檔案

gcc *.o -o test    test為可執行檔案 test.out

-l 指定靜態庫的目錄

製作靜態庫 

打包.o檔案

lib + name + .a

ar rcs + name(*.a) + all(.a)

標頭檔案體現介面

不指定-o就是.c變成.o檔案

例如 : ar rcs lib.a *.o

mv filemame 目錄

使用者只有include 和 lib *.h裡只有介面

靜態庫呼叫 

1.   gcc main.c lib/*.a -o name

lib裡的庫 libmycalc.a -> mycale

nm *.a 檢視庫

可執行程式只打包需要的.o庫檔案

發布程式不需要提供對應的庫,速度快.體積大,庫發生了改變需要重新編譯程式.

共享庫(動態庫)(win *.dll)

不被打包到可執行程式中

lib + name + .so

生成與位置無關的.o

gcc -fpic -c *.c

gcc -shared -o libmycalc.so *.o -iinclude

libmycalc.so為動態庫

使用:ldd 檢視可執行檔案所有依賴的動態庫

.bss 未初始化的全域性變數

.data 已經初始化的全域性變數

ps aux | grep ***

a 使用者

u 顯示程序所屬使用者

x 沒有終端的程序

| 指令一的輸出作為指令二的輸入

kill -l 檢視訊號

kill -sigkill 5179

kill -9 5179

ssh 192.168.40.119@he

tar壓縮解壓

c 建立

x 解壓

v 顯示提示資訊

f 指定壓縮檔案的名字

必須使用z或者j

z 使用gzip方式

.gzj 使用bizp2方式 .bz2

tar zcvf ***.tar.bz2 +目錄檔案

gdbgcc -g

gdb 檔案名字

list 行號

list 檔名:行號(函式名)

設定斷點:

b 行號

b 檔名:行號(函式名)

設定條件斷點:

b 行號 if value == 23

檢視斷點資訊:

info b

刪除斷點:

d 斷點編號

除錯只執行一行** start

繼續執行 continue -- c

直接停在斷點處 run -- r

單步除錯 

進入到函式體:step -- s

跳出函式體: finish

不進入函式體: next -- n

追蹤變數:

自動列印變數的值 dispaly 變數名

取消變數的追蹤 undispllay 編號

獲取編號 info display

手動列印變數的值 print -- p

獲取變數的型別 ptype

跳出迴圈 u

退出gdb quit

open

開啟檔案

open("hello.c", o_rdwr);

建立檔案

open("myhello", o_rdwr|o_creat, 0777); //許可權是八進位制數字

umask 022

判斷檔案是否存在

open("myhello", o_rdwr | o_creat|o_excl, 0777);

將檔案截斷為0

open("myhello", o_rdwr | o_trunc);

lseek

獲取檔案大小

lseek(fd,0,seek_end);

檔案拓展

lseek(fd, 2000, seek_end);

實現檔案拓展,在做一次寫操作

write(fd, "a", 1);

空洞檔案的用處

通過指定相對於開始位置、當前位置或末尾位置的位元組數來重定位 curp,這取決於 lseek() 函式中指定的位置

函式原型:

#include #include off_t lseek(int fd, off_t offset, int whence);

引數說明:

fd:檔案描述符

offset:偏移量,該值可正可負,負值為向前移

whence:搜尋的起始位置,有三個選項:

(1).seek_set: 當前位置為檔案的開頭,新位置為偏移量大小

(2).seek_cur: 當前位置為檔案指標位置,新位置為當前位置加上偏移量大小

(3).seek_end: 當前位置為檔案結尾,新位置為偏移量大小

返回值:檔案新的偏移值

Linux基礎學習

1.linux中沒有類似於windows中 登錄檔 這樣的二進位製表項,linux中所有軟體的配置都是通過文字檔案實現的。2.linux中命令列是提供使用者輸入命令的介面,其本身只接受輸入,然後將命令傳遞給命令編譯器。shell 是乙個程式,它在使用者和作業系統之間提供了乙個面向行的可互動介面 3....

linux基礎學習

1.檔名之前多乙個 則代表這個檔案為 隱藏檔案 2.chgrp 改變檔案所屬使用者組 chown 改變檔案所有者 chmod 改變檔案的許可權 r 4,w 2 x 1 3.檔案預設許可權 umask umask的分數值指的是 該預設值需要減掉的許可權 002表示的許可權被拿掉了2.4.檔案具有sui...

LINUX基礎學習

linux區分英文的大小寫。使用者與使用者組概念 linux是乙個提供多使用者多工的操作環境。root是最高端別的管理員,而對每乙個使用者來說各自會有自己的檔案和許可權,不同使用者之間一般不可以互相修改各自的檔案。當在linux下乙個開發團隊進行開發時,開發成員需要互相訪問團隊內某成員的檔案並修改,...