1. 程式人生 > >Linux環境下的程式編譯

Linux環境下的程式編譯

GCC常用編譯引數
•-c:只編譯,不連線成為可執行檔案,編譯器只是由輸入的.c等原始碼檔案生成.o為字尾的目標檔案,通常用於編譯不包含主程式的子程式檔案。
•-o output_filename:確定輸出檔案的名稱為output_filename,同時這個名稱不能和原始檔同名。如果不給出這個選項,gcc就給出預設的可執行檔案a.out。
•-g:產生符號除錯工具(GNU的gdb)所必要的符號資訊,要使用gdb對原始碼進行除錯,我們就必須加入這個選項。
•-O:對程式進行優化編譯、連線,採用這個選項,整個原始碼會在編譯、連線過程中進行優化處理,這樣產生的可執行檔案的執行效率可以提高,但是,編譯、連線的速度就相應地要慢一些。
•-O2:比-O更好的優化編譯、連線,當然整個編譯、連線過程會更慢。
•-Idirname:將dirname所指出的目錄加入到程式標頭檔案目錄列表中,是在預編譯過程中使用的引數。C程式中的標頭檔案包含兩種情況:
A)#include<stdio.h>
B)#include"myinc.h"
其中,A類使用尖括號(< >),B類使用雙引號("")。
對於A類,預處理程式cpp在系統預設包含檔案目錄(如/usr/include)中搜尋相應的檔案,
對於B類,cpp在當前目錄中搜尋標頭檔案,這個選項的作用是告訴cpp,如果在當前目錄中沒有找到需要的檔案,就到指定的dirname目錄中去尋找。
在程式設計中,如果我們需要的這種包含檔案分別分佈在不同的目錄中,就需要逐個使用-I選項給出搜尋路徑。
•-Ldirname:將dirname所指出的目錄加入到程式函式檔案庫檔案的目錄列表中,是在連線過程中使用的引數。在預設狀態下,連線程式ld在系統的預設路徑中(如/usr/lib)尋找所需要的檔案庫檔案,這個選項告訴連線程式,首先到-L指定的目錄中去尋找,然後到系統預設路徑中尋找,如果函式庫存放在多個目錄下,就需要依次使用這個選項,給出相應的存放目錄。
•-lname:在連線時,裝載名字為“libname.a”的函式庫,該函式庫位於系統預設的目錄或者由-L選項確定的目錄下。例如,-lm表示連線名為“libm.a”的數學函式庫,如果既有動態庫,又有靜態庫,預設連結動態庫。
上面我們簡要介紹了gcc編譯器最常用的功能和主要引數選項,更為詳盡的資料可以參看Linux系統的聯機幫助。

相關推薦

linux環境程式編譯工作流程

1.原始碼.c/.h檔案 2.預處理,將.c/.h檔案中的標頭檔案進行處理,巨集定義進行處理,除錯模式進行處理。使用gcc -E選項生成.i檔案 eg: # gcc -E hello.c -o hello.i 3.編譯器,將.i檔案生成彙編檔案,gcc首先檢查程式碼的規範性、是否有語法錯誤,

Linux環境如何編譯和執行c程式

1 單個檔案的編譯和執行 建立main.c檔案,內容如下:  編譯: 執行: 2 多個檔案的編譯和執行建立sum.c檔案,內容如下: 建立main.c檔案,內容如下:   編譯:    生成可執行檔案,檔名為main: 執行程式:

Linux 環境手工編譯安裝Apache

Apache手工編譯安裝Apache 實驗準備: 1.VMwore 12 環境下Red Hat 6.5版本虛擬機一臺 2.相關軟件包:apr、apr-util、httpd 備註:apache官網下載http://www.apache.org/ 將實驗所需的軟件包下載好,並解壓到指定文件夾 `` 一、Apach

linux環境編譯apk

kali linux apktool apktool d -f xxx.apk -o xxx 反編譯後生成的檔案目錄 名稱 存放內容 assets (未被編譯)專案的assets資料夾

Linux環境如何編譯和執行c程序

文件的 ron 當前 cto directory 變量 沒有 執行文件 nbsp 1 單個文件的編譯和執行 創建main.c文件,內容如下: 編譯: 執行: 2 多個文件的編譯和執行創建sum.c文件,內容如下: 創建main.c文件,內容如下: 編譯:

Linux環境程式core掉了

(1) Core的概念:當程式執行的過程中異常終止或崩潰,作業系統會將程式當時的記憶體狀態記錄下來,儲存在一個檔案中,這種行為就叫做Core Dump。 (2) Core的作用:關鍵的程式執行狀態也會同時 dump 下來,例如暫存器資訊(包括程式指標、棧指標等)、記憶體

Linux環境原始碼編譯和執行常用的兩個命令:pkg-config和ldconfig

        最近一段時間在研究linux伺服器叢集的相關知識,打算基於corosync和pacemaker來搭建一個linux高可用叢集, 通過編譯原始碼包來了解其依賴的動態庫,在編譯的過程中遇到一些問題,總結一些,供大家以後參考(很通用哦):        我們

ARM+linux環境程式的開發和燒錄

一  方法一( 串列埠通訊 ):         1.  在PC開發端的linux環境中寫好原始碼。         2.  使用交叉編譯器arm-linux-gcc編譯之。         3.  用超級終端或者DNW建立ARM開發板與PC開發端的連線給ARM開發

linux 環境 G++編譯cpp檔案

今天興致勃勃地搗騰了一下午ubuntu(我的是ubuntu 9.10) ,感覺ubuntu還是很好用的 ,是一個對linux初學者度過適應期的不錯的作業系統。由於剛剛接觸C++,不免心生一股編寫C++程式的熱情。於是編寫了一個很簡單的C++ 程式 程式碼:(HelloCpp

Linux環境c程式編譯和執行

1 單個檔案的編譯和執行建立main.c檔案,內容如下: #include <stdio.h> #include <stdlib.h> int main(void){ printf("Hello world!\n"); return 0; };   編譯:

語言程式編譯、連結具體過程及Linux環境的具體例項

我們知道一個C語言程式從編寫完成到生成可執行檔案分為預處理、編譯、彙編、連結,最後再生成可執行檔案。 預處理階段 前處理器主要做四部分工作,分別是:標頭檔案展開、巨集替換、去註釋以及條件編譯。 (1)標頭檔案展開就是編譯器會根據字元#開頭的命令去讀取相應的系統檔案或者自定義檔案, 並把相應的

linux環境編譯C++ 程式

在linux環境下編譯C++ 程式 單個原始檔生成可執行程式 下面是一個儲存在檔案 helloworld.cpp 中一個簡單的 C++ 程式的程式碼: 單個原始檔生成可執行程式 /* helloworld.cpp */ #include <iostream> int main

linux環境編譯執行OpenCV程式的兩種方法

  原來以為在Ubuntu下安裝好了OpenCV之後,自己寫個簡單的程式應該很容易吧,但是呢,就是為了編譯一個簡單的顯示圖片的程式我都快被弄崩潰了。   在谷歌和上StackOverFlow檢視相關問題解答之後,我下面就介紹Command Line和CMake兩種方式。

C語言程式編譯、連結具體過程及Linux環境的具體例項

我們知道一個C語言程式從編寫完成到生成可執行檔案分為預處理、編譯、彙編、連結,最後再生成可執行檔案。 預處理階段 前處理器主要做四部分工作,分別是:標頭檔案展開、巨集替換、去註釋以及條件編譯。 (1)標頭檔案展開就是編譯器會根據字元#開頭的命令去讀取相

Linux環境程式編譯

GCC常用編譯引數•-c:只編譯,不連線成為可執行檔案,編譯器只是由輸入的.c等原始碼檔案生成.o為字尾的目標檔案,通常用於編譯不包含主程式的子程式檔案。•-o output_filename:確定輸出檔案的名稱為output_filename,同時這個名稱不能和原始檔同名。如果不給出這個選項,gcc就給出預

Linux環境編譯安裝Mysql

mysql上一篇文章介紹了手工編譯安裝Apache,這篇文章將繼續之前的文章,介紹如何編譯安裝Mysql。 - 二、 編譯安裝Mycql 1. 首先解壓mysql文件到/opt目錄。 tar zxvf /opt/lamp/mysql-5.5.24.tar.gz -C /opt/ 2.確認安裝 gcc 、

linux環境編譯運行OpenCV程序的兩種方法

https 鏈接庫 pen vco ons 程序 TP uil htm 一、命令行Command Line 1 g++ opencv_test.cpp -o opencv_test `pkg-config --cflags --libs opencv` 2 ./op

Linux 環境 PHP 擴展的變異編譯與安裝

font spa mysql 所有 sqli 技術 php 操作 size (操作系統 Centos7, 已安裝 mysqli 為例) 1,進入到 PHP 解壓後的源碼包的的 ext 文件夾 2,查看是否存在 mysqli 擴展 => ls 3,這裏既是所有 PHP

Linux環境c程序的編譯和執行

環境變量 動態 main.c tor direct 環境 沒有 stdlib.h share 1 單個文件的編譯和執行創建main.c文件,內容如下: #include <stdio.h> #include <stdlib.h> int main

C語言編寫Copy程式Linux環境的操作)

COPY程式的編寫 (作者:Baron_wu 禁止轉載) 一、實驗描述 在這個實驗中,我們要做一個程式,這個程式是將一個檔案的內容複製到一個目標檔案。首先這個程式提示使用者輸入要複製的原始檔案的名字,以及要複製到的目標檔案的名字。 確保包括必要的錯誤檢查,包括確保原始檔案存在