① 什麼是GCCGCC有什麼作用
GCC(GNU Compiler Collection,GNU編譯器套件),是由 GNU 開發的編程語言編譯器。它是以GPL許可證所發行的自由軟體,也是 GNU計劃的關鍵部分。
GCC原本作為GNU操作系統的官方編譯器,現已被大多數類Unix操作系統(如linux、BSD、Mac OS X等)採納為標準的編譯器,GCC同樣適用於微軟的Windows。GCC是自由軟體過程發展中的著名例子,由自由軟體基金會以GPL協議發布。
GCC功能與作用:
1、預處理
命令gcc首先調用cpp進行預處理,在預處理過程中,對源代碼文件中的文件包含(include)、預編譯語句(如宏定義define等)進行分析。
2、編譯
用GCC編譯C/C++代碼時,它會試著用最少的時間完成編譯並且編譯後的代碼易於調試。易於調試意味著編譯後的代碼與源代碼有同樣的執行順序,編譯後的代碼沒有經過優化。
3、連接
當所有的目標文件都生成之後,gcc就調用ld來完成最後的關鍵性工作,這個階段就是連接。在連接階段,所有的目標文件被安排在可執行程序中的恰當的位置,同時,該程序所調用到的庫函數也從各自所在的檔案庫中連到合適的地方。
4、匯編
匯編過程是針對匯編語言的步驟,調用as進行工作,一般來講,.S為後綴的匯編語言源代碼文件和匯編、.s為後綴的匯編語言文件經過預編譯和匯編之後都生成以.o為後綴的目標文件。
(1)gcc編譯apk擴展閱讀:
gcc所遵循的部分約定規則:
1、.c為後綴的文件,C語言源代碼文件。
2、.a為後綴的文件,是由目標文件構成的檔案庫文件。
3、.h為後綴的文件,是程序所包含的頭文件。
4、.i 為後綴的文件,是C源代碼文件且不應該對其執行預處理。
5、.m為後綴的文件,是Objective-C源代碼文件。
6、.o為後綴的文件,是編譯後的目標文件。
7、.s為後綴的文件,是匯編語言源代碼文件。
② qt輸出安卓程序設置
1.新建一個普通Widgets的工程
?2.選擇Desktep Qt5.9.3 MinGW 32bit編譯器和android for armeabi-v7a (GCC 4.9, Qt 5.9.3 for Android armv7)編譯器
?3.然後選擇默認的就行
?4.在mainwindow.ui界面上,放入兩個按鈕,分別命名為發布和訂閱
?5.選擇MinGW 32bit的debug編譯模式,構建和運行
?6.選擇Android的debug模式重新構建,構建完後,在工程同目錄下,生產一個build-AndroidTest3-Android_for_armeabi_v7a_GCC_4_9_Qt_5_9_3_for_Android_armv7-Debug文件夾,在該生產的文件的android-buildin目錄下,會生成該項目的APK
?7.點擊運行按鈕,在彈出框中選擇AVDVertualDevice安卓模擬器,如果沒有則點擊【Creat Android Virtual Device】按鈕新建一個。
?8.點擊【ok】按鈕後,等待安卓虛擬機啟動一段時間,會彈出如下界面:(注意:要等安卓虛擬機完全開機完後,才會自動運行剛才的apk程序,第一次啟動可能需要4-5分鍾左右,如果需要持續調試,可以不用關閉該安卓虛擬機)
?9.如果剛才生產的apk沒有自動啟動的話,可以把剛才生產的apk丟進安卓虛擬機中進行測試
③ 如何用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 怎麼編譯c的源程序的gcc,編譯命令是什麼
在Linux下面,如果要編譯一個C語言源程序,我們要使用gcc編譯器。
先將源文件編譯成目標文件:gcc - c hello.c
生成hello.o文件,再將目標文件編譯成可執行文件:gcc -o hello hello.o
如:
int main(int argc,char **argv)
{
printf("Hello Linux ");
}
(4)gcc編譯apk擴展閱讀:
在使用GCC編譯器的時候,我們必須給出一系列必要的調用參數和文件名稱。GCC編譯器的調用參數大約有100多個,這里只介紹其中最基本、最常用的參數。具體可參考GCC Manual。
GCC最基本的用法是∶gcc [options] [filenames]
其中options就是編譯器所需要的參數,filenames給出相關的文件名稱。
網路_gcc
⑤ 64位linux下的GCC如何編譯出一個32位可執行程序
理論上安裝支持環境,之後64位的gcc編譯成32位程序,就加-m32參數即可。
當然還一個辦法是裝個32位的gcc。
另外,交叉編迅純譯也適用於x86架構。
不過這么編譯經常會出現各種問題,所以編譯32位的程序,最好還是用32位系統。
不一定重裝,用chroot和setarch命令配合即可弄出一個32位的子系統。
⑥ GCC安全編譯選項
各種安全選擇的編譯參數如下:
NX:-z execstack / -z noexecstack (關閉 / 開啟)
Canary:-fno-stack-protector /-fstack-protector / -fstack-protector-all (關閉 / 開啟 / 全開啟)
PIE:-no-pie / -pie (關閉 / 開啟)
RELRO:-z norelro / -z lazy / -z now (關閉 / 部分開啟 / 完全開啟)