Ubuntu系统---终端下用g++进行c++项目

目录

一、编译工具(g++/gcc)和编辑工具(vim/gedit)
二、C语言 的编译与运行
三、C++语言 的编译与运行
四、gcc/g++的详细过程

“一、二、三”是在当前文件夹下,编译一个文件为一个可执行文件的例子。对于编译多个文件为一个可执行文件,以及如何创建一个工程和编译一个工程(一个大点的工程不止一个.cpp,还有.h,...),后续在学、在作笔记。

正文

一、编译工具(g++/gcc)和编辑工具(vim/gedit)
在ubuntu环境下对C/C++进行编译首先保证ubuntu系统中包含编译工具(g++/gcc)和编辑工具(vim),C语言和C++对应的编译器:gcc -> C , g++ -> C++ 。
如果环境中不存在可以在终端中输入以下命令进行安装:

sudo apt-get install build-essential
sudo apt install vim
sudo apt-get install gcc
sudo apt-get install g++

二、C语言 的编译与运行
步骤:(1)写.c文件; (2)编译.c文件; (3)运行可执行文件
(1)写.c文件
    1).c文件hello.c代码如下:

    #include<stdio.h>
int main()
{
printf("Hello world !\n");
return ;
}

(2)编译.c文件
在当前路径下编译.c文件:
  gcc -o hello hello.c
编译完成后可以看到在和hello.c相同目录下有一个hello的可执行文件。

(3)运行可执行文件
在当前路径下运行编译后的可执行文件:
  ./hello
(注意一定要加上路径才能运行,点表示当前路径。直接hello不添加路径,不能运行)

三、C++语言 的编译与运行
步骤:(1)写.cpp文件; (2)编译.cpp文件; (3)运行可执行文件
(1)写.cpp文件

    # .cpp文件hello.cpp代码如下:

    #include<iostream>
using namespace std;
int main()
{
cout << "Hello world !" << endl;
return ;
}

(2)编译.cpp文件
在当前路径下编译.cpp文件:
  g++ -o hello hello.cpp
编译完成后可以看到在和hello.cpp相同目录下有一个hello的可执行文件。

(3)运行可执行文件
在当前路径下运行编译后的可执行文件:
  ./hello
(注意一定要加上路径才能运行,点表示当前路径。直接hello不添加路径,不能运行)

四、gcc/g++的详细过程
  可以手动进行这四个步骤。
第一步:预处理。#号开头的代码全被解决掉(预编译,包含库,宏定义等等),产生一个后缀.i的文件以便下一步使用。
                gcc -E hello.c    (不会产生.i文件,文件内内容打印在了终端,所以需要将这些信息重定向到.i文件)
                gcc -E hello.c >> hello.i

第二步:编译。这一步主要检查语法错误。产生一个后缀.s的文件(汇编文件)
                gcc -S hello.i     (大写字母S)

第三步:汇编。产生后缀.o的object目标文件,二进制,但不可以运行,因为缺少库信息
                gcc -c hello.s

第四步:链接。添加库信息,产生一个后缀.o的可执行文件
                gcc hello.o -o hello

Ubuntu系统---终端下用g++进行c++项目的更多相关文章

  1. ubuntu系统虚拟机下共享文件夹

    一般情况 1.安装: sudo apt-get install open-vm-dkms     2.挂载: sudo mount -t vmhgfs .host:/ /mnt/hgfs 用以上命令安 ...

  2. ubuntu在终端下复制粘贴的2种方法

    最近因为项目需要在ubuntu环境下开发(我是用的unbantu虚拟环境),经常要在终端下手动输入很长的文件路径,觉得很麻烦,就谷歌了2种方法如下 你可能会问,什么是ubuntu? 简单来说就是一个基 ...

  3. ubuntu系统根目录下各个目录用途说明

    1./ 根目录     --------- 所有目录挂在其下 2./boot     --------- 存放Ubuntu内核和系统启动文件.系统启动时这些文件先被装载. 3./etc    ---- ...

  4. mac系统终端下忽略大小写 与 git自动补全(git auto completion)

    1.下载git-completion.bash 并放到home 目录下: curl https://raw.githubusercontent.com/git/git/master/contrib/c ...

  5. vs code 在终端下使用 code ./ 打开当前项目

    Mac OS Visual Studio Code的扩展工具菜单中有Install command line的快捷安装 运行 VS code并打开命令面板( ⇧⌘P ),然后输入 shell comm ...

  6. Ubuntu系统使用apache部署多个django项目(python4.3)

    /etc/apache2/sites-available/pyweb.conf <VirtualHost *:> ServerName 192.168.1.46 DocumentRoot ...

  7. Ubuntu系统的安装

    在上一篇博客中,我们已经建立了一个“空白”的虚拟Ubuntu镜像,在这篇博客中,我们将介绍如何安装并进入完整的Ubuntu系统. 写在前面:不同版本的系统在安装过程中,有些操作可能会不同,但是其核心步 ...

  8. Android系统在超级终端下必会的命令大全(adb shell命令大全)

    . 显示系统中全部Android平台: android list targets . 显示系统中全部AVD(模拟器): android list avd . 创建AVD(模拟器): android c ...

  9. 虚拟机下安装ubuntu系统

    前期准备工具; 1,Oracle VM VirtualBox虚拟机 下载地址:http://pan.baidu.com/s/1miSaGvm 密码:c3dy 2,ubuntu系统文件 下载地址:htt ...

随机推荐

  1. 侯捷C++内存管理(一)

    1.Overview 2.内存分配的每一层面 3.四个层面的基本用法 1).对比一下: 4.基本构件之一newdelete expression(上) ——>new和operator new.m ...

  2. 解决 Ceph v14.2.1 RGW使能压缩时遇到不生效的问

    根据常规方法部署Ceph(14.2.1 or 14.2.2)集群+rgw后,通过命令“radosgw-admin zone placement modify --rgw-zone=default -- ...

  3. Mybatis使用Spring data Pageable的方法

    引言 可能这个用法是个邪教了...但是简单说这都是历史缘故,貌似是项目最初用JPA后面还是换Mybatis了,我接手时候看着那个写好的Controller层觉得换了怪可惜的,就沿用了.网上找找,提供的 ...

  4. python 列表List - python基础入门(13)

    列表是python开发过程中最常用的数据类型之一,列表俗称:list ,特点如下: 1.列表由一个或者多个数据构成,数据的类型可以不相同也可以相同: 2.列表中的数据需要写在[]中括号内部,数据与数据 ...

  5. 洛谷 题解 P1225 【黑白棋游戏】

    看见很多dalao写了什么双向BFS,蒟蒻表示不会写啊. 怎么办办? 先来分析一下题目,一眼看去就是一个搜索题,考虑DFS与BFS. 先放一份DFS的代码: #include<bits/stdc ...

  6. BBC这10部国宝级纪录片,让孩子看遍世间最美的地方

    https://weibo.com/ttarticle/p/show?id=2309404382383649486138#related

  7. 《Mysql 锁 - 概述》

    一:锁类型(加锁范围区分类型) - MySQL里面的锁可以分为:全局锁.表级锁.行级锁. 二:全局锁 - 作用 -  对整个数据库实例加锁. - 加锁方式 - MySQL提供加全局读锁的方法:Flus ...

  8. 【牛客网】Longest Common Subsequence

    [牛客网]Longest Common Subsequence 发现只有d数组最格路 于是我们把前三个数组中相同的数记成一个三维坐标,同一个数坐标不会超过8个 从前往后枚举d,每次最多只会更新不超过8 ...

  9. Firefox在新标签页打开“书签”和“搜索栏”(无需插件)

    转自   初来灬炸到的博客 前言 每次打开书签前,都需要创建新标签页. 每次搜索前,都需要创建新标签页.  这个真滴很麻烦.下面介绍的方法非常简单,不需要任何插件,通过修改浏览器参数即可. 名词 设置 ...

  10. const关键字的使用——C语言

    一.常规用法 关键字const用来定义只读变量,被const定义的变量它的值是不允许改变的,即不允许给它重新赋值,即使是赋相同的值也不可以.所以说它定义的是只读变量,这也就意味着必须在定义的时候就给它 ...