(2020.06.30)
- 如何complie和run一個文件樟遣,在terminal中
在terminal輸入gcc -o target_file xxx.cpp涕滋。其中xxx.cpp是被complie的文件皂冰,target_file是compile后保存的文件栓票。如果compile通過舞丛,則在同一個目錄下生成target_file的文件构捡。輸入./target_file即可運行該文件独郎。
(2020.11.08 Sun)
上面用到的編譯工具gcc(GNU compiler collection)是GNU開發(fā)的編譯器踩麦,支持C/C++/JAVA/GO等語言。其常用的指令如下氓癌。首先生成一個main.c文件如下
#include<stdio.h>
int main(void)
{
printf("\n some text\n");
return 0;
}
- 指定可執(zhí)行文件 -o
$gcc main.c #最簡單調(diào)用方式
$gcc main.c -o main # 編譯main.c并生成一個名為main的可執(zhí)行文件
(2020.11.10 Tues)
- 顯示所有warning信息 -Wall
$gcc -Wall main -o main
- 只看預處理結(jié)果 -E
$gcc -E main.c > main.i
- 生成匯編代碼 -S
$gcc -S main.c > main.s
- 僅生成complied code(不含連接link) -C
$gcc -C main.c #生成main.o
- 生成所有中間文件(含可執(zhí)行文件) -save-temps
$gcc -save-tempts main.c
$ls
a.out main.c main.i main.o main.s
- 與共享庫連接 -l
$gcc -Wall main.c -o main -lCPPfile # main.c與libCPPfile庫相連谓谦,生成最終main
- 創(chuàng)建位置獨立代碼 -fPIC
該指令用于創(chuàng)建共享庫,使其位置獨立
$gcc -c -Wall -Werror -fPIC Cfile.c
$gcc -shared -o libCfile.so Cfile.o
- 打印所有executed指令 -v
$gcc -Wall -v main.c -o main
- Enable the support of ISO C89 programs -ansi
$gcc -Wall -ansi main.c -o main
- 字符char翻譯成無符號字符 -funsigned-char
$gcc -Wall -funsigned-char main.c -o main
- 字符char翻譯成有符號字符 -fsigned-char
$gcc -Wall -fsigned-char main.c -o main
- 編譯時間宏complie time macro -D
$gcc -Wall -DMY_MACRO main.c -o main
- warning轉(zhuǎn)化成error -Werror
$gcc -Wall -Werror main.c -o main
- 通過文件給出gcc的選項 @
$cat option_file #選項寫入option_file這個文件
-Wall -omain
$gcc main.c @option_file
main.c: In function ‘main’:
main.c:6:11: warning: ‘i’ is used uninitialized in this function [-Wuninitialized]
$ls main
main