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. 生成可执行文件流程

  1. 使用编辑器编写 C++ 代码;
  2. 使用 C++ 编译器对代码进行编译,将代码转换为包含在目标文件中的机器语言版本;
  3. 使用链接器链接编译器的输出,生成一个可执行文件(如Windows 中的.exe 文件);

编译链接
在编译过程中, C++ 代码(通常包含在 .cpp 文本文件中)被转换为处理器能够执行的字节码。编译器每次转换一个代码文件,生成一个扩展名为 .o.obj 的目标文件,并忽略这个 cpp 文件可能对其他文件中代码的依赖。

解析这些依存关系的工作由链接程序负责,如果链接成功,则创建一个可执行文件,供程序员执行和分发。整个过程也被称为构建可执行文件。

总结整体过程为: 编写 -> 编译 -> 链接 -> 执行

4. 解释器与编译器区别

  • 解释器是一种对代码(或字节码)进行解释并执行相应操作的工具;
  • 编译器将代码作为输入,并生成目标文件;

C++ 而言,编译和链接后,将得到一个可执行文件,处理器可直接执行它,而无需做进一步解释。

编译器将 C++ 代码文件作为输入,并生成一个使用机器语言的目标文件。通常,您的代码依赖于库和其他代码文件中的函数。链接器负责建立这些链接,并生成一个可执行文件,它集成了您指定的所有直接或间接依存关系。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值