C++ 笔记(01)— 环境设置(安装g++、g++ 编译 C++、 生成可执行文件流程、解释器与编译器区别)
1. g++安裝
在 Linux 或者 UNIX 系統上,可以通過下面命令來查看是否安裝了 GCC 。
$ g++ -v
如果已經安裝 GNU 編譯器,則有以下輸出:
wohu@wohu:~/C++$ g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 5.4.0-6ubuntu1~16.04.10' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10)
wohu@wohu:~/C++$
如果沒有安裝,在 Ubuntu 系統下使用 apt 命令可以直接安裝:
$ sudo apt-get install g++
2. g++使用
2.1 g++ 編譯 C++
程序 g++ 是將 gcc 默認語言設為 C++ 的一個特殊的版本,鏈接時它自動使用 C++ 標準庫而不用 C 標準庫。
下面是一個保存在文件 main.cpp 中一個簡單的 C++ 程序的代碼:
#include <iostream>
using namespace std;
int main()
{cout << "Hello, world!" << endl;return 0;
}
最簡單的編譯方式:
$ g++ main.cpp
由于命令行中未指定可執行程序的文件名,編譯器采用默認的 a.out 。程序可以這樣來運行:
$ ./a.out
Hello, world!
通常我們使用 -o 選項指定可執行程序的文件名,以下實例生成一個 main 的可執行文件:
$ g++ main.cpp -o main
執行 main 應用程序
$ ./main
Hello, world!
2.2 gcc 編譯 C++
通過遵循源碼的命名規范并指定對應庫的名字,用 gcc 來編譯鏈接 C++ 程序是可行的,使用下面命令:
$ gcc main.cpp -lstdc++ -o main
3. 生成可執行文件流程
- 使用編輯器編寫
C++代碼; - 使用
C++編譯器對代碼進行編譯,將代碼轉換為包含在目標文件中的機器語言版本; - 使用鏈接器鏈接編譯器的輸出,生成一個可執行文件(如Windows 中的.exe 文件);
在編譯過程中, C++ 代碼(通常包含在 .cpp 文本文件中)被轉換為處理器能夠執行的字節碼。編譯器每次轉換一個代碼文件,生成一個擴展名為 .o 或 .obj 的目標文件,并忽略這個 cpp 文件可能對其他文件中代碼的依賴。
解析這些依存關系的工作由鏈接程序負責,如果鏈接成功,則創建一個可執行文件,供程序員執行和分發。整個過程也被稱為構建可執行文件。
總結整體過程為: 編寫 -> 編譯 -> 鏈接 -> 執行
4. 解釋器與編譯器區別
- 解釋器是一種對代碼(或字節碼)進行解釋并執行相應操作的工具;
- 編譯器將代碼作為輸入,并生成目標文件;
就 C++ 而言,編譯和鏈接后,將得到一個可執行文件,處理器可直接執行它,而無需做進一步解釋。
編譯器將 C++ 代碼文件作為輸入,并生成一個使用機器語言的目標文件。通常,您的代碼依賴于庫和其他代碼文件中的函數。鏈接器負責建立這些鏈接,并生成一個可執行文件,它集成了您指定的所有直接或間接依存關系。
總結
以上是生活随笔為你收集整理的C++ 笔记(01)— 环境设置(安装g++、g++ 编译 C++、 生成可执行文件流程、解释器与编译器区别)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: evo多少钱啊?
- 下一篇: 开一家儿童主题餐厅大概需要多少资金?