日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Linux系统学习笔记二

發布時間:2023/12/20 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux系统学习笔记二 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考課程:?基于VSCode和CMake實現C/C++開發 | Linux篇_嗶哩嗶哩_bilibili

1、文件編輯器

vim:是所有Unix和Linux系統下標準的文件編輯器

gedit:Linux系統下的純文本編輯器,可視化后類似于Windows系統中的記事本

touch linux2.txt sudo gedit linux2.txt

nano:使用起來比vim簡單的文本編輯器,可直接編輯,且使用該命令打開文件后,文件的下端有操作提示符,使用起來非常簡單

nano linux2.txt

2、編譯器和調試器的安裝

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# 輸出 Debug

man:查看指令使用手冊,如:man gcc

總結

以上是生活随笔為你收集整理的Linux系统学习笔记二的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。