ubuntu 下安裝gcc g++ 方法c++
sudo apt install gcc g++ubuntu
創建hello.c 源文件
gcc hello.c => 生成a.out
gcc hello.c -o hello => 生成hello
./a.out | ./hello 運行bash
gcc編譯選項 | 選項的意義 |
---|---|
-E | 預處理指定的源文件,不進行編譯 |
-S | 編譯指定的源文件,不進行彙編 |
-c | 編譯、彙編指定的源文件,不進行連接 |
-o | 指定生成文件名字 |
-I directory | 指定 include 包含文件的搜索目錄 |
-g | 編譯時,生成調試信息,該程序能夠被調試器調試 |
-D | 在程序編譯的時候,指定一個宏 如打開DEBUG -D DEBUG |
-w | 不生成任何警告信息 |
-Wall | 生成全部警告信息 |
-O [123] | n的取值範圍:0~3。編譯器的優化選項的4個級別,-O0表示沒有優化,-O1爲缺省值,-O3優化級別最高 |
-l | 在程序編譯的時候,指定使用的庫 |
-L | 指定編譯的時候,搜索的庫的路徑。 |
-fPIC/fpic | 生成與位置無關的代碼 |
-shared | 生成共享目標文件。一般用在創建共享庫時 |
-std | 指定編譯標準 如-std=c++1z或-std=gnu++17或-std=c++17 |
gcc xxx.c xxx.c xxx.c -capp
ar rcs libxxx.a xxx.o xxx.o xxx.o函數
引入頭文件與須要的靜態庫libxxx.a (頭文件中聲明瞭靜態庫的接口,libxxx.a爲接口的實現)
gcc main.c -o app -I ./include/ -L 靜態庫路徑 -l 靜態庫名字測試
gcc -c xxx.c xxx.c xxx.c -c -fpic
-fpic/-fPIC 使用相對地址記錄代碼位置優化
引入頭文件與須要的動態庫libxxx.so 頭文件中聲明瞭靜態庫的接口,libxxx.a爲接口的實現)
$ gcc main.c -o app -I ./include/ -L 動態庫路徑 -l 動態庫名字調試
添加: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/庫的路徑索引
添加: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/庫的路徑接口
. ~/.bashrc
. /etc/profile
source /etc/profile
. 至關於 source
靜態庫對函數庫的連接是放在編譯時期完成的。
程序在運行時與函數庫再無瓜葛,移植方便。
浪費空間和資源,全部相關的目標文件與牽涉到的函數庫被連接合成一個可執行文件
動態庫把對一些庫函數的連接載入推遲到程序運行的時期。 能夠實現進程之間的資源共享。 程序升級變得簡單。(只修改須要升級部分,靜態庫則須要整個從新編譯)