Linux系统学习笔记二
參考課程:?基于VSCode和CMake實現C/C++開發 | Linux篇_嗶哩嗶哩_bilibili
1、文件編輯器
vim:是所有Unix和Linux系統下標準的文件編輯器
gedit:Linux系統下的純文本編輯器,可視化后類似于Windows系統中的記事本
touch linux2.txt sudo gedit linux2.txtnano:使用起來比vim簡單的文本編輯器,可直接編輯,且使用該命令打開文件后,文件的下端有操作提示符,使用起來非常簡單
nano linux2.txt2、編譯器和調試器的安裝
gcc和g++分別是GNU的c和c++的編譯器,gdb是Unix系統的調試工具
sudo apt-get update sudo apt-get install gcc sudo apt-get install g++ sudo apt-get install build-essential gdb # 該命令可同時安裝gcc g++及gdb# 查看安裝版本 gcc --version # 輸出 gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0 Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.g++ --version # 輸出 g++ (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0 Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.gdb --version # 輸出 GNU gdb (Ubuntu 9.2-0ubuntu1~20.04.1) 9.2 Copyright (C) 2020 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.CMake安裝可以參考我之前的博客:Ubuntu安裝Cmake記錄_Cassiel_cx的博客-CSDN博客
或直接安裝
sudo apt-get install cmake cmake --version # 輸出 cmake version 3.23.3CMake suite maintained and supported by Kitware (kitware.com/cmake).3、編譯過程
預處理->編譯->匯編->鏈接 (生成可執行程序)
vscode通過調用gcc和g++編譯器來編譯c/c++程序
mkdir testcpp touch test.cpp sudo gedit test.cpp# test.cpp # include <iostream> using namespace std;int main() { cout << "Hello World" << endl; return 0; }預處理 (輸出 .i 文件)
將所有的#define刪除,并且展開所有的宏定義;處理所有的條件預編譯指令,比如#if、#ifdef、#elif、#else、#endif等;處理#include預編譯指令,將被包含的文件直接插入到預編譯指令的位置;刪除所有的注釋;添加行號和文件標識,以便編譯時產生調試用的行號及編譯錯誤警告行號;保留所有的#pragma編譯器指令,因為編譯器需要使用它們。
# -E表示編譯器只預處理輸入文件 g++ -E test.cpp -o test.i編譯 (輸出 .s 文件)
掃描->語法分析->語義分析->源代碼優化->代碼生成->目標代碼優化?
# -S表示g++為代碼產生匯編語言后停止編譯 g++ -S test.i -o test.s匯編 (輸出 .o 文件)
將 .s 文件翻譯成機器語言指令,把這些指令打包成可重定位目標程序格式
# -c表示g++僅把代碼編譯為機器語言的目標代碼 g++ -c test.s -o test.o鏈接 (輸出二進制文件)
生成可執行目標文件
g++ test.o -o test以上四步匯總
g++ test.cpp -o test?在 Linux 系統中,綠色代表可執行文件
4、g++ 重要編譯參數
-O[num]:g++對代碼進行優化
-O0 表示不做優化 -O1 表示默認優化 -O2 表示除了完成-O1的優化以外,還進行一些額外的調整工作 -O3 表示包括循環展開和其他一些與處理特性相關的優化工作-l:用于指定程序鏈接的庫,后面緊跟著的就是庫名。注意,需在/lib,/usr/lib和/usr/local/lib里面的庫才能被-l鏈接
-L:?指定庫文件路徑,后面緊跟著庫文件所在的目錄名
-I:指定頭文件搜索目錄
-Wall:打印警告信息
-w:關閉警告信息
-std=c++11:設置編譯標準
-o:指定輸出文件名,若不指定,則默認生成a.out
-D:定義宏,如:-DDEBUG
# include <iostream> # include <stdio.h> using namespace std;int main() { # ifdef DEBUGprintf("Debug\n"); # endif } g++ -DDEBUG test.cpp -o test ./test# 輸出 Debugman:查看指令使用手冊,如:man gcc
總結
以上是生活随笔為你收集整理的Linux系统学习笔记二的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GeForce Experience 安
- 下一篇: 汗一下硕美科。。