Linux常用基礎(三)

2022-07-19 15:45:16 字數 1770 閱讀 7710

1、gcc編譯器

(1)簡介

前期的gcc是gnu c compiler,僅僅用於c語言的編譯,經過多年的發展,現在的gcc為gnu compiler collection,並且目前支援多種程式語言的編譯。

(2)gcc的編譯過程

1)預處理

主要是完成標頭檔案的展開,c檔案中巨集的替換展開,去掉有關的注釋。

-e:生成預處理的檔案

-o:生成目標檔案

2)編譯

預處理後的檔案仍然是c檔案,編譯的過程是把c檔案編譯成彙編檔案。

-s:生成彙編檔案

3)彙編

將彙編檔案變成二進位制檔案。

-c:編譯子程式

4)鏈結

(3)其它命令引數

1)檢視gcc版本號:-v / --version

2)指定頭檔案目錄:-i + 目錄

3)編譯時定義巨集:-d

4)編譯優化:-on (n=0-3:當n為0不優化,當n為3優化級別最高)

6)包含除錯資訊:-g (gdb除錯需要加此引數)

2、靜態庫

(1)命名規則

1)lib + 庫的名字 + .a

2)例如:libmytest.a(庫的名字為mytest)

(2)製作步驟

1)生成對應的.o檔案,編譯時新增-c引數

命令:gcc mytest.c -c

2)將生成的.o檔案打包

命令:ar rcs + 靜態庫的名字(libmytest.a)+ 生成的所有.o檔案

(3)發布和使用靜態庫

1)將打包好的lib和標頭檔案發布出去,標頭檔案提供api介面的相關資訊

2)靜態庫使用方法

(4)優缺點

優點:1)發布程式的時候,不需要提供相應的庫

2)載入庫的速度快

缺點:1)庫被打包到應用程式中,導致應用程式的體積很大

2)一旦庫發生了變化,則應用程式需要重新編譯

3、共享庫(動態庫)

(1)命名規則

1)lib + 庫的名字 + .so

2)例如:libmytest.so

(2)製作步驟

1)生成與位置無關的**(生成與位置無關的.o檔案)

命令:gcc -fpic -c *.c -i + 標頭檔案路徑

2)將.o打包成共享庫(動態庫)

(3)發布和使用共享庫

發布:將.so檔案和標頭檔案進行發布

使用:(4)程式執行時動態庫無法被載入的問題解決

解決:1)將動態庫拷貝到路徑/lib中去(不允許使用)

2)將動態庫路徑新增到額外的鏈結環境變數ld_library_path

命令:export ld_library_path=./lib(動態庫的路徑)

3)將ld_library_path永久改變

修改~/.bashrc配置檔案,在檔案最後export

4)通過修改動態聯結器的配置檔案

1)需要找到動態鏈結器的配置檔案

命令:ls -l /etc/ld.so.conf

2)動態庫的路徑寫入到配置檔案中

命令:vim /etc/ld.so.conf

3)將動態庫的路徑新增到最後一行,然後儲存退出vim

4)更新鏈結配置檔案

命令:sudo ldconfig -v

(5)優缺點

優點:1)應用程式的體積小

2)動態庫更新,不一定需要重新編譯應用程式

缺點:1)發布程式的時候,需要發布動態庫給使用者

2)動態庫並沒有打包到應用程式中去,載入速度相對較慢

Linux常用基礎

date 日期 cat etc shells 檢視當前系統中支援哪些shell echo shell 檢視當前系統正在使用的命令解析 命令補齊快捷鍵 tab cd 進入根目錄 cd 進入使用者目錄 ls l 目錄名稱 檢視此目錄詳細資訊 ls a 顯示隱藏檔案 ls dl filename 檢視目錄...

php常用基礎 三

fastcgi 和 php fpm的區別 cgi連線webservice和php解析器的乙個協議 fastcgi是cgi的改良版本 php fpm程序管理器 fastcgi web和php通訊的協議 通過fpm來完成 php fpm fastcgi的程序管理器 master worker程序來處理請...

Linux常用基礎命令

linux常用基礎命令 2.ls 檢視目錄或者檔案的屬 列舉出任一目錄下面的檔案 eg ls usr man ls l a.d表示目錄 directory 如果是乙個 表示是檔案,如果是l則表示是乙個連線檔案 link b.表示檔案或者目錄許可許可權.分別用可讀 r 可寫 w 可執行 x 3.cp ...