gcc程式設計的過程:
# gcc -e main.c -o main.i //預處理,-o 定義生成的檔名
# gcc -s main.c -o main.s //編譯
# gcc -c main.c -o main.o //彙編
# gcc main.o -o hello //鏈結 生成可執行檔案
通常我們在gcc程式設計的時候,直接使用 #gcc main.c-o hello一條命令完成了以上的工作,但是實際上整個過程是有上邊四個過程的,我們經常用的還有生成*.o檔案,下面
會說到。
如果我們在編譯時需要的標頭檔案不再當前目錄,那麼直接編譯會報錯,因為他首先會在當前路徑下找標頭檔案,這時候就要加上檔案路徑,
# gcc -c ./head/head.c main.c -o test -i ./head -i表示他會在那個目錄下面找標頭檔案,相當於說明了兩次標頭檔案的位置
關於庫檔案,有兩類,分為動態庫和靜態庫,動態庫在windows和linux下面的形式分別為 *.dll 和 *.so,靜態庫分別為 *.lib 和 *.a;
庫檔案可以結合標頭檔案*.h來執行,這樣就可以在一些不想開源的場合將原始檔*.c做成庫檔案,就可以隱藏了原始碼。
這裡(這是乙個鏈結)還有一些gcc程式設計的應用舉例,是當時的乙個作業
在linux下生成動態和靜態庫
靜態庫:
#gcc -c *.c *.c main.c //將*.c檔案處理為*.o檔案
# arcr libname.a *.o *.o
/*生成靜態庫的命令,lib是字首,name是庫檔名,後面是這個庫檔案所依賴的檔案,也就是庫依賴,一般就是第一步生成得*.o檔案
# gcc -o file_name main.o libname.a
# gcc -o file_name main.c -l. -lname/*生成可執行檔案file_name的命令,第二條後面的-lname中,l代表lib,name就是定義的靜態庫的name, -l加路徑,表示庫檔案
所在路徑,這裡的 . 也就是當前路徑*/ 動態庫
#gcc -c *.c *.c main.c //將*.c檔案處理為*.o檔案
# gcc -shared -fpci -o libname.so *.o *.o
//生成分享庫,也就是動態庫
#gcc -o file_name main.c -l. -lname
//生成可執行檔案
同樣是生成了可執行檔案,不同的是,靜態庫生成的可以直接在當前路徑下執行,但是動態庫不行,將動態庫檔案移動到系統庫中,也就是lib資料夾(64位系統為lib64),
再執行就可以執行。
ldd + 可執行檔名 可以看到庫的依賴
另外幾種常用命令
應用舉例:
程式設計工具 GCC基礎命令
假設源程式檔名為test.c 選項 e 用法 gcc e test.c o test.i 作用 將test.c預處理輸出test.i檔案。選項 s 用法 gcc s test.i 作用 將預處理輸出檔案test.i彙編成test.s檔案。選項 c 用法 gcc c test.s 作用 將彙編輸出檔案...
Linux程式設計起步 GCC基本用法
初學時最好從命令列入手,這樣可以熟悉從編寫程式 編譯 除錯和執行的整個過程。編寫程式可以用vi或其它編輯器編寫。編譯則使用gcc命令。要往下學習首先就得熟悉gcc命令的用法。gcc命令提供了非常多的命令選項,但並不是所有都要熟悉,初學時掌握幾個常用的就可以了,到後面再慢慢學習其它選項,免得因選項太多...
Linux程式設計起步 GCC基本用法
初學時最好從命令列入手,這樣可以熟悉從編寫程式 編譯 除錯和執行的整個過程。編寫程式可以用vi或其它編輯器編寫。編譯則使用gcc命令。要往下學習首先就得熟悉gcc命令的用法。gcc命令提供了非常多的命令選項,但並不是所有都要熟悉,初學時掌握幾個常用的就可以了,到後面再慢慢學習其它選項,免得因選項太多...