1. 程式人生 > >Linux下 編譯C++/C以及常用的幾種命令(ubuntu)

Linux下 編譯C++/C以及常用的幾種命令(ubuntu)

安裝命令:
sudo apt-get install build-essential
sudo apt-get install gcc
sudo apt-get install g++

C的編譯執行

現在我們在文字編輯器裡寫一個C的簡單的程式(好像所有學習C或者C++的書都會出現)
#include <stdio.h>
int main()
{
    printf("Hello,World!\n");
    return 0;
}

現在存檔為Hello.c,開啟你的終端,並在檔案當前目錄輸入:
gcc Hello.c -o hello   

然後在終端中輸入sudo  ./hello ,你就能在終端中看到程式執行結果了。



下面來說下C++是如何編譯的

寫程式(不用我多說了吧)
程式碼:

#include <iostream>
using namespace std;
int main()
{
    cout<<"HelloWorld"<<endl;
    return 0;
}

存檔為Hello.cpp
然後使用g++命令來編譯
g++ Hello.cpp -o hello


多檔案的編譯:這裡給出三個原始檔Hello.h, Hello.cpp, MyFirst.cpp

//file_NO1:Hello.h
class Hello {     
public:
      Hello();
     int Display();
};
//file_NO2:Hello.cpp
#include <iostream>
#include "Hello.h"
using namespace std;
Hello::Hello()
{
}
int Hello::Display()
{
    cout<<"Hello,World!\n"<<endl;
     return 0;
}
//file_NO3:MyFirst.cpp
#include <iostream>
#include "Hello.cpp"
int main()
{
    Hello theHello;
    theHello.Display();
    return 0;
}

在g++中有一個引數-c 可以只編譯不連線,那麼我們就可以按如下順序編譯檔案,
程式碼:

g++ -c Hello.cpp -o Hello.o
g++ -c MyFirst.cpp -o MyFirst.o
g++ MyFirst.o Hello.o -o MyFirst


你是否會問,如果是一個專案的話,可能會有上百個檔案,這樣的編譯法,人不是要累死在電腦前嗎,或者等到你編譯成功了,豈不是頭髮都白了,呵呵,所以我們要把上述的編譯過程寫進以下一個文字檔案中:
#這裡可以寫一些檔案的說明
MyFirst: MyFirst.o hello.o
g++ MyFirst.o hello.o -o MyFirst
Hello.o:Hello.cpp
g++ -c Hello.cpp -o Hello.o
MyFirst.o:MyFirst.cpp
g++ -c MyFirst.cpp -o MyFirst.o

程式的除錯:

存檔為MyFirst,在終端輸入:make MyFist ,程式出現了錯誤可是所有程式設計師共同的敵人,在編寫程式時我們應該儘量的去避免錯誤的出現,不過編寫的時候再怎麼都不可避免的出現這樣那樣的錯誤,對程式進行必要的除錯是一個好主意,那我們怎麼來除錯程式呢,看下面:
gdb ./檔名
以下為除錯狀態下的可以用到的命令(可以僅輸入單詞的輸入,如break可簡為b),尖括號中為說明

list <顯示原始碼>
break 行號 <設定斷點>
run <執行程式>
continue <繼續從斷點處執行>
print 變數 <除錯時檢視變數的值>
del 行號 <刪除斷點>
step <單步執行,可跟蹤到函式內部>
next <單步執行,不可跟蹤到函式內部>
quit <退出>

It's never too late to learn!!!保持正確的姿態去學習,總有一天抵達成功的彼岸!!!

相關推薦

Linux 編譯C++/C以及常用命令ubuntu

安裝命令:sudo apt-get install build-essential sudo apt-get install gcc sudo apt-get install g++ C的編譯執行 現在我們在文字編輯器裡寫一個C的簡單的程式(好像所有學習C或者C++的書都會出現)#include <s

Linux 進程後臺運行的方式screen

ins 通過 shel disown code 開頭 sea man pre Ctrl+z/bg/nohup/setsid/& 在Linux中,如果要讓進程在後臺運行,一般情況下,我們在命令後面加上&即可,實際上,這樣是將命令放入到一個作業隊列中了:

Linux 編譯Xerces-c++

linu ida 共享 ++ blank 這樣的 gunzip pad -c 原文地址: http://blog.csdn.net/chenlanmin/article/details/2200064 按照 doc/html 文件夾中的詳細指導編譯 Xerces-C++ 共

Linux編譯執行C程式

程式碼變成可執行檔案叫做編譯(compile);先編譯這個還是先編譯那個這個(即編譯的安排)叫做構建(build) 我們在Linux環境下編譯C語言需要gcc. 1.配置GCC    剛裝好的系統已經有GCC了,但是這個GCC什麼檔案都不能編譯,因為沒有一些必要的標頭

超詳細 Linux 編譯安裝Redis 以及php配套使用

一、Linux 下安裝Redis 下載地址:http://redis.io/download,下載最新文件版本。 把滑鼠移到上圖的綠色框上,就會顯示下圖提示:(直接右鍵複製連結就好) 本教程使用的舊版,文件版本為 3.2.11,(舊版的連結在同一頁面的下方找的到)下載並安裝:

c#窗體學習——常用控制元件介紹

偷懶,轉自若雲流風,原文:https://blog.csdn.net/ruoyunliufeng/article/details/72874691  一.常用控制元件 Lable標籤→僅顯示文字; TextBox文字控制元件→文字框; Button按鈕控制元件

解決archlinuxQT程序,以及wineQQ無法輸入中文.xinitrc

light hup blog arc program xinitrc 無法 wineqq qt5 昨天安了i3wm,發現fcitx在很多程序中無法輸入中文,nixnote2,還有ss-qt5 查了wiki,明明有在~/.xinitrc中加入 export [email&#

linux源代碼搭建php環境之mysql

運行程序 google chcon 系統環境 ncurses con 軟件 func ets 如今已經大半夜了,五一勞動節挺無聊的。 折騰一下吧。實在是睡不著。於是乎在電腦上安裝個虛擬機,然後呢,在虛擬機上搭建一個php環境。 首先我得安裝MYSQL吧。發現遇到

java 從網上載文件的方式

org put pyo common tran com created pla -1 package com.github.pandafang.tool; import java.io.BufferedOutputStream;import java.io.File;imp

Linux批量替換文件內容和文件名

lan 其中 xargs ava 提取 pat 內容 文件內容 nbsp 1、批量替換指定多個文件的文件內容 在指定目錄/your/path裏,查找包含old_string字符串的所有文件,並用new_string字符串替換old_string字符串。 sed -i

linux常用命令ubuntu

保存 執行命令 local oca blog 查看進程 pos linux常用命令 系統啟動 vi [path] vim [path] :q 退出 :wq 保存退出 查看進程 ps ps -aux | grep mem 查看全部含 “mem”的進程 ps –aux

linux安裝eclipse並使用xstart遠程使用centos7

服務器 ftp 啟動文件 www. package linux down 使用 bsp 1 eclipse安裝   1)到官網下載eclipse的linux版     http://www.eclipse.org/downloads/packages/eclipse-i

linuxI/O複用與epoll實際使用

上一節《linux下I/O複用與epoll實際使用(一)》主要講解了epoll的原理,這一節結合socket的程式設計,詳解select與epoll程式設計示例。 一、socket程式設計 在TCP/IP協議中“IP地址+TCP或者UDP埠號”唯一標識網路通訊中

LINUXsocket實現伺服器與多客戶端通訊

一直對網路方面的技術比較感興趣,有時間就學習學習。雖然現在很多高階語言都已將網路程式設計部分做了封裝處理,使之使用更加方便,但是學習基礎原理,還是一個程式設計師必須要做的。 linux下的socket程式設計原理,網路上已經有大把的詳細說明,這裡不做說明,程式碼中已有簡單註釋。 具體方法,有

ubuntu獲取網絡卡的命令列方法

1. ifconfig -a 其中 HWaddr欄位就是mac地址2. cat /sys/class/net/eth0/address 檢視eth0的mac地址,其中eth0根據網絡卡不同而不同3. c

java-上下文以及獲取Spring的ApplicationContext的方法整理

起因是睡覺的時候,我在想如果被面試問道:“你知道怎麼可以獲取上下文嗎?”這個問題我感到很模糊,之前也寫過獲取上下文,但是記得好像有好幾種方法,覺得有點混淆了,所以就想自己好好整理下。 網上搜集的context上下文的幾種解釋: 一: Context上下文主要用來從上

linux終端分屏使用的兩方法screen和tmux

本文主要介紹兩種終端分屏工具:screen和tmux,分享出來供大家參考學習,下面來看看詳細的介紹: 一、使用screen分屏(只能上下分屏,不能左右分屏) (1)安裝工具 在ubuntu系統中使用sudo apt-get install screen 安裝s

linux /etc/profile、~/.bash_profile ~/.profile的執行過程

關於登入linux時,/etc/profile、~/.bash_profile等幾個檔案的執行過程。 在登入Linux時要執行檔案的過程如下: 在剛登入Linux時,首先啟動 /etc/profile 檔案,然後再啟動使用者目錄下的 ~/.bash_profile、 ~/

Html中嵌套其他HTML文件的方法

java mar net rip gin bsp ace wid style 給大家整理了3個方法,一個是HTML的iframe標簽,別兩個是JS引用。比如要在arr.html文件裏引用index.html文件,方法如下。 HTML引用方法: <iframe na

JS實現繼承的方式

多繼承 logs 影響 .cn sta 初始化 定義 附錄 style 轉自:幻天芒的博客 前言 JS作為面向對象的弱類型語言,繼承也是其非常強大的特性之一。那麽如何在JS中實現繼承呢?讓我們拭目以待。 JS繼承的實現方式 既然要實現繼承,那麽首先我們得有一個父類,