第七章 進程環境 | 001 命令形參、gcc與g++的使用

  1. 命令形參

命令行參數是使用main()函數參數來處理的,其中,argc是指傳入參數的個數,argv[]是一個指針數組,指向傳遞給程序的每個參數。

應當指出的是, argv[0]存儲程序的名稱,argv[1]是一個指向第一個命令行參數的指針,argv[n]是最后一個參數。 如果沒有提供任何參數,argc 將為1,否則,如果傳遞了一個參數,argc將被設置為2。

多個命令行參數之間用空格分隔,但是如果參數本身帶有空格,那么傳遞參數的時候應把參數放置在雙引號或單引號內部。


測試代碼:

#include <stdio.h>int main(int argc, char *argv[]) {if (argc == 2) {printf("The argument supplied is %s\n", argv[1]);} else if (argc > 2) {printf("Too many arguments supplied.\n");} else {printf("One argument expected.\n");}
}

編譯與運行
這里寫圖片描述


  1. gcc的使用

這里寫圖片描述

語法
gcc(選項)(參數)選項:
-o:     指定生成的輸出文件;
-E:     僅執行編譯預處理;
-S:     將C代碼轉換為匯編代碼;
-wall:  顯示警告信息;-c:    僅執行編譯操作,不進行連接操作。 參數:C源文件(指定C語言源代碼文件)

1.選項 -o:將test.c預處理、匯編、編譯并鏈接形成可執行文件test。-o選項用來指定輸出文件的文件名。

gcc test.c -o test

2.選項 -E:將test.c預處理輸出test.i文件。

gcc -E test.c -o test.i

3.選項 -c:將預處理輸出文件test.i匯編成test.s文件。

gcc -E test.c -o test.i

4.選項 -O:使用編譯優化級別1編譯程序。級別為1~3,級別越大優化效果越好,但編譯時間越長。

gcc -O1 test.c -o test

**如果有多個源文件,基本上有兩種編譯方法:**

【問題】假設有兩個源文件為test.c和testfun.c

1.多個文件一起編譯:將testfun.c和test.c分別編譯后鏈接成test可執行文件。

多個文件一起編譯:將testfun.c和test.c分別編譯后鏈接成test可執行文件。

2.分別編譯各個源文件,之后對編譯后輸出的目標文件鏈接。

gcc -c testfun.c    #將testfun.c編譯成testfun.o
gcc -c test.c         #將test.c編譯成test.o
gcc -o testfun.o test.o -o test    #將testfun.o和test.o鏈接成test

以上兩種方法相比較,第一中方法編譯時需要所有文件重新編譯,而第二種方法可以只重新編譯修改的文件,未修改的文件不用重新編譯。

  1. g++的使用

鏈接:Linux的g++的使用

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/385669.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/385669.shtml
英文地址,請注明出處:http://en.pswp.cn/news/385669.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java接口實例化對象和類實例化對象,附贈課程+題庫

面試整體事項 簡歷要準備好&#xff0c;聯系方式一定要正確清晰醒目&#xff0c;項目經歷按照時間倒序闡述&#xff0c;注意描述自己在項目中承擔的職責&#xff0c;簡歷的模板盡量選擇簡潔的&#xff0c;畢竟程序員大部分還是喜歡簡單明了的。推薦boss直聘&#xff0c;我覺得…

java接口開發規范,干貨滿滿

第一個模塊&#xff1a;數據庫 1.1 騰訊數據庫面試問題 解釋ACID四大特性 原子性的底層實現 數據庫宕機后恢復的過程 如何保證事務的ACID特性 MySQL日志類型 這5個題目相對來說是比較普遍的&#xff0c;這里我就不一一給出答案了&#xff0c;給大家看下我的那個數據庫學…

001 makefile的使用

標題 標題 當我們有多個源程序時&#xff0c;用gcc每個都編譯&#xff0c;這樣我們沒有修改過的源文件也得重新編譯一次&#xff0c;很麻煩&#xff0c;這時候寫makefile就派上了用場&#xff0c;可以大大的提高我們的編碼和調試速度。( 注意&#xff1a;頭文件并不參加鏈接和…

java接口的修飾符可以為,附架構師必備技術詳解

第一章 MySQL入門與初步 1.1 MYSQL 簡介 1.2 關系數據庫管理系統 1.3 MYSQL 使用的 SQL 語言 1.4 MYSQL 數據處理 第二章 MySQL的安裝 2.1 MYSQL 系統的安裝布局 2.2 安裝 MYSQL 系統的分發 2.3 安裝后期的的設置與測試 2.4 系統的升級 2.5 在同一臺機器上運行多個 MYSQL 服務…

ALSA【一】

ALSA是Advanced Linux Sound Architecture 的縮寫&#xff0c;目前已經成為了linux的主流音頻體系結構。 在內核設備驅動層&#xff0c;ALSA提供了alsa-driver&#xff0c;同時在應用層&#xff0c;ALSA為我們提供了alsa-lib&#xff0c;應用程序只要調用alsa-lib提供的API&…

java接口的定義與實現,學習路線+知識點梳理

Spring框架自誕生以來一直備受開發者青睞&#xff0c;有人親切的稱之為&#xff1a;Spring 全家桶。Spring更是避免了重復造輪子的工作并跟隨著互聯網行業的發展做出不斷的更新&#xff0c;很多研發人員把spring看作心目中最好的Java項目&#xff0c;沒有之一。 **可以毫不夸張…

第3章 文件IO | 001 文件描述符

概述 在Linux系統中一切皆可以看成是文件&#xff0c;文件又可分為&#xff1a;普通文件、目錄文件、鏈接文件和設備文件。文件描述符&#xff08;file descriptor&#xff09;是內核為了高效管理已被打開的文件所創建的索引&#xff0c;其是一個非負整數&#xff08;通常是小整…

java提取圖片中的文字,深入分析

第一個暴擊&#xff1a;Spring 上一份Spring的手繪思維腦圖&#xff08;就像是個知識大綱總結&#xff09;&#xff0c;預覽一下Spring的知識點&#xff0c;心里有個譜。不過這邊我是采用的截圖方式&#xff0c;為了把全部的內容都截取出來&#xff0c;所以整個就比較小&#…

Leetcode | 513. Find Bottom Left Tree Value

題目&#xff1a;翻轉二叉樹 方法①&#xff1a;深度優先遍歷(鏈接) /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ cla…

java基礎入門傳智播客答案,GitHub已標星16k

選擇 在現在這個浮躁而又拜金的社會&#xff0c;我相信很多人做技術并非出于熱愛&#xff0c;只是被互聯網的高薪吸引&#xff0c;畢竟技術崗位非常枯燥&#xff0c;不僅要面對奇奇怪怪的需求&#xff0c;還要不停的充實自己避免被淘汰。所以想要吃好技術這碗飯并不容易。 我…

563. 二叉樹的坡度

給定一個二叉樹&#xff0c;計算整個樹的坡度。 一個樹的節點的坡度定義即為&#xff0c;該節點左子樹的結點之和和右子樹結點之和的差的絕對值。空結點的的坡度是0。 整個樹的坡度就是其所有節點的坡度之和。 示例: 輸入: 1/ \2 3 輸出: 1 解釋: 結點的坡度 2 : 0 …

java基礎入門第二版二手,細節爆炸

一面&#xff1a;70分鐘 突擊電話面試 正思考著項目功能模塊&#xff0c;阿里面試官打來了電話&#xff0c;開始了阿里一面。 阿里面試官自我介紹&#xff0c;介紹了5分鐘左右&#xff0c;部門的情況&#xff0c;主要的業務 提問開始 會哪些操作系統 Linux會一點說一下操作指…

進程通訊:管道

管道&#xff0c;通常指無名管道&#xff0c;是 UNIX 系統IPC最古老的形式。 1、特點&#xff1a; 它是半雙工的&#xff08;即數據只能在一個方向上流動&#xff09;&#xff0c;具有固定的讀端和寫端。它只能用于具有親緣關系的進程之間的通信&#xff08;也是父子進程或者兄…

java基礎入門答案譚曉芳,原理+實戰講解

One&#xff1a;JVM實踐思維圖&#xff08;完整版&#xff09; Two&#xff1a; 走近Java 概述 Java技術體系Java發展史Java虛擬機家族&#xff1a;&#xff08;Sun Classic/Exact VM、HotSpot VM、Mobile/Embedded VM、BEA JRockit/IBM J9 VM、BEA Liquid VM/Azul VM、Apache…

Leetcode 102. 二叉樹的層次遍歷

給定一個二叉樹&#xff0c;返回其按層次遍歷的節點值。 &#xff08;即逐層地&#xff0c;從左到右訪問所有節點&#xff09;。 例如: 給定二叉樹: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其層次遍歷結果&#xff1a; [ [3], [9,20], [15,7…

java基礎常問面試題,面試必問

一、首先本職工作一定要做好做精 本人之前在干兼職的時候&#xff0c;也忽視過本職工作&#xff0c;從而導致自己落后平均技術水平&#xff0c;雖然之后迎頭趕上&#xff0c;但這不能不算是個遺憾。前在接一些活的時候就感覺技術的重要性了&#xff0c;如果當年我技術再好些&a…

Leetcode | 107. Binary Tree Level Order Traversal II

題目&#xff1a;二叉樹的層次遍歷 II 1. 代碼①&#xff1a;深度優先搜索(鏈接&#xff09; /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NUL…

java基礎教程哪個好,吐血整理

RabbitMQ&#xff1a; 優點&#xff1a;輕量&#xff0c;迅捷&#xff0c;容易部署和使用&#xff0c;擁有靈活的路由配置 缺點&#xff1a;性能和吞吐量較差&#xff0c;不易進行二次開發 RocketMQ&#xff1a; 優點&#xff1a;性能好&#xff0c;穩定可靠&#xff0c;有活…

java基礎教程哪個好,面試必會

如何才可以進大廠&#xff1f; 答案其實也很簡單&#xff0c;能力學歷。不知道大家有沒有發現&#xff0c;大廠的一些部門對于學歷要求已經放低了&#xff0c;阿里的一些部門同樣也招大專學歷的程序員&#xff0c;當然肯定也是因為他的能力足夠出色。 對于準備秋招的你來說&a…

java基礎教程第三版耿祥義,后臺開發JAVA崗

Java虛擬機內存模型 Java虛擬機內存模型中定義的訪問操作與物理計算機處理的基本一致&#xff01; Java中通過多線程機制使得多個任務同時執行處理&#xff0c;所有的線程共享JVM內存區域main memory&#xff0c;而每個線程又單獨的有自己的工作內存&#xff0c;當線程與內存區…