Ⅰ centos 6.4 編譯安裝 gcc 4.8.1 要多長時間
為了不影響本機的gcc環境,開發工具默認安裝在『/opt/centos/devtoolset-1.1/root/』目錄下。需要修改用戶的環境變數方可使用:
export CC=/opt/centos/devtoolset-1.1/root/usr/bin/gcc
export CPP=/opt/centos/devtoolset-1.1/root/usr/bin/cpp
export CXX=/opt/centos/devtoolset-1.1/root/usr/bin/c++
推薦使用gcc默認給出的環境變數設置腳本『/opt/centos/devtoolset-1.1/enable 』。將其加到有需要用戶的環境變數中,重新登錄即生效。
echo 'source /opt/centos/devtoolset-1.1/enable' >> ~/.bash_profile
source /opt/centos/devtoolset-1.1/enable
gcc -v
筆者小試了一把,在CentOS 6.4下,原生GCC版本為4.4.7-3,官網給出的開發版本為4.7.2-5。拿來編譯linux-3.9.7內核,生成的文件變小了一丁點,時間沒太留意,上應該更快吧。哈哈……
Ⅱ 關於如何判斷gcc之類的編譯器的編譯結果
我們再使用gcc編譯的時候可以讓他的輸出信息保存到文件當中
gccmain.c-omain&>status.txt
上面的命令就是將gcc編譯的信息保存到status.txt文件中,然後我們再程序中讀取文件,看文件是否有內容,沒有內容就說明沒有報錯和警告,編譯成功。有內容就對每一行內容進行判斷,看是warring還是error,只有warring也代表編譯成功,有error代表編譯失敗,然後把這些報錯信息都列印出來就好了。
下面看一下例子:
Ⅲ LInux 如何使用GCC編譯器將一個文件夾下的100個.o文件打包成一個靜態庫文件(.a)
你已經用gcc編譯出目標文件了,用ar工具打包成.a文件就行了啊,示例:
如上圖,假設我有test1.c,test2.c兩個源文件,先使用gcc -c *.c將源文件編譯成目標文件,可以看到,生成了test1.o,test2.o兩個目標文件,然後,使用ar命令:ar crv libtest.a *.o將該目錄下的所有目標文件打包生成了libtest.a文件。這樣,你在編譯的時候就可以直接使用這個靜態庫了。
Ⅳ 如何用GCC在linux下編譯C語言程序
在Linux下面,如果要編譯一個C語言源程序,我們要使用GNU的gcc編譯器,假設我們有下面一個非常簡單的源程序(hello.c):
int main(int argc,char **argv)
{
printf("Hello Linux
");
}
要編譯這個程序,我們只要在命令行下執行:
gcc -o hello hello.c
gcc 編譯器就會為我們生成一個hello的可執行文件.執行./hello就可以看到程
序的輸出結果了
Ⅳ 關於在linux下用gcc編譯頭文件
首先,確定你的頭文件都用宏隔開了,防止了重復定義。例如,在file.h 中的開頭就是
#ifndef __FILE__HEAD___
#define __FILE__HEAD___
//頭文件中的內容
#endif //__FILE__HEAD___
之後,
file.h中用到了list.h ,所以file.h中#include "list.h"//假設頭文件都在同一目錄下
list.h中用到了preapre.h 所以list.h中#include "prepare.h"
prepare.h中用到了node.h 所以prepare.h中#include "node.h"
在某些情況下,由於代碼組織等的問題,還是會出現編譯問題,這個就是代碼組織技巧的問題了,要根據具體代碼具體判斷了。
另外,准確的說頭文件只是在編譯的第一步,預處理的時候使用了,真正被「編」的應該是源文件,這個是編譯原理方面的問題了。
Ⅵ 請問linux下,gcc編譯程序的過程(從讀取源文件到製作可執行程序中間所有過程,越詳細越好)
gcc -S *.c 預處理+反匯編