linux C語言編譯後執行檔案從命令輸入引數
linux使用gcc編譯C檔案後,會生成一個執行檔案,而我們執行這個檔案的時候想要使用輸入的引數怎麼辦呢,其實很簡單,我們在main函式中加入形參即可,如下圖
int main(int argc,char * argv[])
其實不難看出第一個形參,int型別的argc代表你輸入的引數個數,第二個形參,指標陣列argv存放著你從外部輸入的引數,陣列的每一項代表著引數,另注意執行檔案本身也算一個引數
接下來是例子:
我事先編譯了一個簡單的C語言程式,不過我在主函式中加入了一個形參,也就是argc
編譯執行結果如下
證明了argc存放的是引數個數
接下來是驗證存放參數的陣列
執行結果如下
證明了這個陣列存放著我們輸入的引數
相關推薦
linux C語言編譯後執行檔案從命令輸入引數
linux使用gcc編譯C檔案後,會生成一個執行檔案,而我們執行這個檔案的時候想要使用輸入的引數怎麼辦呢,其實很簡單,我們在main函式中加入形參即可,如下圖 int main(int argc,cha
減小C語言生成的執行檔案大小的方法(嵌入式)
編譯過程新增 -ffunction-sections和-fdata-sections 連結過程新增選項 -Wl,--gc-sections 可以使得編譯出來的程序去除無用函式和全域性變數符號,減少程序大小。 1. 編譯過程中新增-ffunction-s
軟體素材---linux C語言:linux下獲取可執行檔案的絕對路徑--getcwd函式
//標頭檔案:#include <unistd.h> //定義函式:char * getcwd(char * buf, size_t size);  
Linux C 源程式 編譯連線生成 可執行檔案
源程式 test.c第一種 ,編譯 gcc -c test.c -o test.o 連線 gcc -o test test.o第二種。 編譯連線 gcc -o test test.c執行 ./
linux下如何編譯和執行C語言
1、linux系統下 C程式編譯: gcc -Wall -g -o testDefunctProcess testDefunctProcess.c -Wall 代表編譯器在編譯過程中會輸出警告資訊(Warning),比如有些變數你並沒有使用,指標指向的型別有誤,mai
Linux下C語言生成可執行文件的過程
代碼 內容 gcc 創建 inux 匯編代碼 機器 都是 inf 在當前目錄下創建一個C源文件並打開: touch test.c gedit test.c直接編譯: gcc test.c -o test 分步驟編譯: 1) 預處理 gcc -E test.c -o
5.C語言編譯執行
C語言編譯執行 在程式執行模式章節中,說到程式設計師編寫的程式碼並不能直接執行,在計算機的底層CPU中執行的是各種指令,程式碼必須經過處理後,變成CPU所能識別的指令,才能執行。程式碼在經過處理的過程比較繁雜,其中一個重要的部分就是編譯。C語言程式碼變為可執行檔案的過程比較複雜,可參
軟體素材---linux C語言:向檔案末尾進行追加資料
void AppendDataToFile(char* filePath, char* msg) { // 以附加方式開啟可讀/寫的檔案, 如果沒有此檔案則會進行建立,然後以附加方式開啟可讀/寫的檔案 FILE* fp = fopen(filePath, "a+");
Linux下C語言編譯的問題
在Linux下程式設計發現一個詭異的現象,就是在連結一個靜態庫的時候總是報錯,類似下面這樣的錯誤: (.text+0x13): undefined reference to `func' 關於undefined reference這樣的問題,大家其實經常會遇到,在此,我以詳細地示例給出常見錯誤的各
c語言編譯過程和標頭檔案<>與""的區別
編譯過程: 預處理--編譯--彙編--連結 預處理:用於將所有#include標頭檔案及#define等巨集定義替換成真正的內容,預處理後的得到的仍然是文字檔案,但體積會大很多。 編譯:將預處理之後的程式轉換成特定彙編程式碼的過程
Linux下程式(C語言)實現對檔案的複製
目標: 使用系統呼叫實現cp命令。 原理: 使用系統呼叫open開啟檔案,使用read從檔案讀資料,使用write向檔案寫資料。 傳給可執行程式的引數個數存放在main函式的argc中,引數首地址存放在指標陣列argv中。 我的程式碼: #include <stdio.h&
linux C語言獲取當前可執行程式的路徑及檔名 vs 獲取當前工作路徑
獲取當前工作路徑: 標頭檔案:#include <unistd.h> 定義函式:char * getcwd(char * buf, size_t size); 函式說明:getcwd()會將當前的工作目錄絕對路徑複製到引數buf 所指的記憶體空間,引數size
Linux下如何編譯並執行C程式
CC是Linux作業系統下一個非常重要的原始碼編譯工具,有著許多重要的選項,支援許多不同語言的編譯,如C、C++、Ada、Fortran、Objective、Perl、Python、Ruby以及Java等,甚至Linux的許多核心和許多其他自由軟體以及開放原始碼應用程式都是用C語言編寫並經gcc編譯而成的.
從零開始移植QT4.8.5之三--linux下交叉編譯QT執行庫
這篇文章要實現的目標是在linux下交叉編譯QT在嵌入式裝置OK6410的執行庫,最終在OK6410上執行QT演示程式。 1、觸控式螢幕庫檔案安裝tslib 首先如果嵌入式裝置上有觸控式螢幕,需要先移植tslib,這個不是本次的重點,所以我們就直接搭建編譯的時候需要的tsl
linux C語言遍歷資料夾所有檔案
#include <sys/types.h> #include <sys/stat.h> #include <dirent.h> #include <string.h> #include <stdio.h> voi
c語言編譯預處理和條件編譯執行過程的理解
在C語言的程式中可包括各種以符號#開頭的編譯指令,這些指令稱為預處理命令。預處理命令屬於C語言編譯器,而不是C語言的組成部分。通過預處理命令可擴充套件C語言程式設計的環境。 一.預處理的工作方式 1.1.預處理的功能 在整合開發環境中,編譯,連結是同時完成的。其實,C語言編譯器在對原始碼編譯之前
Linux C語言刪除檔案
有時候需要先清空某個目錄裡的所有檔案,然後再放置新下載檔案。需要開啟目錄,並遍歷此目錄下的所有檔案,然後呼叫remove函式刪除檔案 int EmptyDir(char *destDir) { DIR *dp; struct dirent *entry
一個C原始檔到可執行檔案 [反彙編-函式棧幀 編譯 連結]
[3] Program Headers Program Headers用來描述Segment的資訊。Segment由多個Section組成。一般是將具有共同屬性如.data和.bss匯聚為一個Segement加入到記憶體。個人理解目標檔案以Section的形式存在,可執行檔案以Segement的形式存在以方
Linux C語言程式設計(十五)——程序、執行緒與訊號
1、程序 1.1 基本概念 每個程序在核心中都有一個程序控制塊( PCB)來維護程序相關的資訊, Linux核心的程序控制塊是task_struct結構體。 程序ID:統中每個程序有唯一的id,在C語言中用pid_t型別表示,其實就是一個非負整數。 程序狀態:有執行、掛起、
linux下的C語言計算程式執行時間
本文從介紹基礎概念入手,探討了在C/C++中對日期和時間操作所用到的資料結構和函式,並對計時、時間的獲取、時間的計算和顯示格式等方面進行了闡述。本文還通過大量的例項向你展示了time.h標頭檔案中宣告的各種函式和資料結構的詳細使用方法。 關鍵字:UTC(世界標準時間