1、本機(jī)搭建Linux開(kāi)發(fā)環(huán)境為Vmware workstation 12 player + ubuntukylin-16.04-desktop-amd64路媚,GCC編譯器,Vim文本編輯器琅轧。
2炸枣、Vim編譯器句法:
vim 命令模式:<大寫(xiě)字母=shift+小寫(xiě)字母>
esc-返回命令模式 :wq!-保存并強(qiáng)行退出 :set number-顯示行號(hào)
i-當(dāng)前光標(biāo)前面插入字符 I<大寫(xiě)>-行首插入字符
a-當(dāng)前光標(biāo)后面插入字符 A<大寫(xiě)>-行尾插入字符
o-當(dāng)前光標(biāo)下一行插入字符 O<大寫(xiě)>-當(dāng)前光標(biāo)上一行插入字符
x-向右<后>刪除字符 X<大寫(xiě)>-向左<前>刪除字符
dd-剪切一整行 yy-復(fù)制一整行
ddn-光標(biāo)所在行開(kāi)始剪切n行 yyn-光標(biāo)所在行開(kāi)始復(fù)制n行
p-粘貼上面剪切或復(fù)制的行到光標(biāo)所在行的下面 P<大寫(xiě)>-粘貼上面剪切或復(fù)制的行到光標(biāo)所在行的上面
sp max.c(新建文件) 【將界面區(qū)分為上下兩屏進(jìn)行編碼】? CTRL+W+上下方向鍵->切換? 【上下兩屏間切換】
3、gcc編譯:? gcc -g -c filename.c -o filename
-g為了調(diào)試用的
加個(gè)-g 是為了gdb 用民镜,不然gdb用不到
-o output_filename啡专,確定輸出文件的名稱(chēng)為output_filename买猖,同時(shí)這個(gè)名稱(chēng)不能和源文件同名梳杏。如果不給出這個(gè)選項(xiàng)邓尤,gcc就給出預(yù)設(shè)的可執(zhí)行文件a.out敦跌。
一般語(yǔ)法:
gcc filename.c -o filename
上面的意思是如果你不打 -o filename 那么默認(rèn)就是輸出filemame.out.這個(gè)-o就是用來(lái)控制輸出文件的。
-c 只編譯不鏈接慧库,產(chǎn)生.o文件跷跪,就是obj文件,不產(chǎn)生執(zhí)行文件齐板。(機(jī)器碼)
4吵瞻、gcc的編譯流程分為4步:
預(yù)處理(Pre-Processing) -> 編譯(Compling) -> 匯編(Assembling) -> 連接(Linking)
預(yù)處理:處理#include、#define甘磨、#ifdef 等宏命令
編譯:把預(yù)處理完的文件編譯為匯編程序.s
匯編:把匯編程序.s編譯為.o二進(jìn)制文件
鏈接:把多個(gè)二進(jìn)制文件.o集合(鏈接)成一個(gè)可執(zhí)行文件
5橡羞、 將不會(huì)再進(jìn)行修改的那些函數(shù);公共框架济舆;公共類(lèi)等卿泽,優(yōu)先進(jìn)行編譯成為靜態(tài)庫(kù)。而只將需要經(jīng)常修改的滋觉,即業(yè)務(wù)邏輯部分生成可執(zhí)行代碼又厉,只需要重新編譯這個(gè)部分。
6椎瘟、make命令:在Linux和unix中非常重要覆致,可以將大型的開(kāi)發(fā)項(xiàng)目分解成諾干個(gè)模塊,使用make工具可以很清晰和很便捷對(duì)幾百上千個(gè)源文件進(jìn)行整理肺蔚。make內(nèi)部也是使用的gcc煌妈。
7、main函數(shù)中宣羊,return 0:0代表可以正確返回并執(zhí)行璧诵;
???? &&:邏輯與 【gcc main.c -o main.out &&? ./main.out】
8、int main( int argc, char * argv[] )????? argc獲得文件名本身 + 輸入字符的 總個(gè)數(shù)仇冯; argv[] 記錄字符串之宿。
?? 常用于Linux小工具開(kāi)發(fā)、Linux嵌入式開(kāi)發(fā)苛坚、Linux網(wǎng)絡(luò)程序開(kāi)發(fā)
9比被、Linux標(biāo)準(zhǔn)輸入流、輸出流泼舱、錯(cuò)誤流:【0:stdin等缀;1:stdout;2: stderr】
stdin 默認(rèn)屏幕
stdout 默認(rèn)鍵盤(pán)
stderr
linux把所有東西當(dāng)作文件處理
printf("") 是對(duì)fprintf(stdout,"")函數(shù)的封裝.
scanf("") 是對(duì)fscanf(stdin,"")函數(shù)的封裝
10娇昙、標(biāo)準(zhǔn)輸入流 0尺迂; 標(biāo)準(zhǔn)輸出流 1。&>(覆蓋)&>>(追加)。
11噪裕、管道:ls /etc/ | grep ab??? //查看etc目錄下含有ab 字符的文件
ps -e? 查看進(jìn)程