1、文本編輯器 vi vim gedit gvim vim 可高度自定義,適合單個軟體開發
2、編譯器 gcc
3、庫
4、除錯器 gdb 資源占有少,免費開源,缺少影像顯示,適合小程式開發
5、工程管理器 make(批量處理)自動化編譯,提高開發效率
為什么使用要學Linux工具,它的優勢和作用?
1、可定制 2、開源 3、便攜 4、體積小 5、提高開發效率
其他開發環境和IDE
vs code 相對其他IDE(集成開發環境)小,便捷,功能沒有VS 2019 Qt強大
vs 2019 功能強大,體積大,回應慢
Qt
1、文本編譯器 vim(單體檔案編輯,可高度定制)
三種模式
命令列模式 esc
插入模式 a或I
底行模式 命令列模式下 ”:“ wq 保存退出 q!不保存退出
2、編譯器 gcc
編譯程序:1、預處理 頭檔案展開,宏定義替換,條件編譯 編譯選項 -E
2、編譯 檢查錯誤,生成匯編檔案后綴名.s 編譯選項 -s
3.匯編 編譯成二進制 后綴名.o 編譯選項 -c
4、鏈接 編譯成了執行檔案 后綴名.elf
.elf特點:
ELF:可執行連接檔案格式,
ELF檔案優點:
1. 支持不同平臺上的交叉編譯和交叉鏈接,可移植性性強
2. 在執行時支持動態鏈接共享庫
特點:
1、包含多平臺相關資訊,資訊編譯時由編譯器決定
2、生成一種與位置無關的代碼——地址無關碼,這種代碼可在任意位置正確運行,不受絕對地址影響
3、有GNU協議下的大量工具支持
三級優化
O0不優化
O1 優化代碼
O2 優化演算法
O3 抽象成數學模型和假象機器模型(支持函式集成化)
交叉編譯器 : 在一種計算機環境中運行的編譯程式,能編譯出在另外一種環境下運行的代碼 ,本地編譯產生的檔案 ,不同內核環境無法執行,所以需要經過叫交叉編譯器編譯在其他平臺執行的檔案,提高可移植性,
庫
根據鏈接編譯生成可執行檔案的鏈接方式分為靜態庫和動態庫
靜態庫執行時體積大,運行效率高,,因為編譯時會整合到目標程式中,所以不方便修改,需要改整個可執行檔案都需要重新編譯,后綴.a;
檔案后綴.a;動態庫體積小,運行效率慢,但方便修改,動態庫是將符號鏈接寫入目標檔案,在程式中是一個指向符號,,產品更新時只需替換對應函式庫,不要重新編譯整個可執行檔案,后綴.so
庫的存放位置:
lib 存放系統程式運行所需庫檔案
user /lib或user/local/lib 存放用戶程式的和第三方程式運行的庫
靜態庫制作



ar 壓縮命令
-r 將檔案插入備份檔案
c 建立庫檔案
s 創建目標檔案索引,這在創建較大的庫時能加快時間
-shared 編譯生成動態庫
-fPIC 生成地址無關碼
例:
1、gcc -c add.c (執行到匯編生成.o檔案,add是一個.c檔案名)
2、ar -rcs libadd.a add.o
3、鏈接編譯
gcc main.c -o mian -ladd -L/user (main是需要編譯的函式)
-l 是用來鏈接編譯時所編譯程式所以用的庫,相當于#include<stdio.h>
-L 鏈接這個庫所在的路徑
動態庫和靜態庫的的參考一樣,兩個庫同時存在優先鏈接動態庫
gdb


make作用
三要素
目標
依賴
命令
關系:根據依賴檔案,執行命令生成目標檔案
用法
多目錄makefile用法
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/351591.html
標籤:其他
