方法一直接編譯
gcc file1.c file2.c file3.c main.c -o out
前提是main.c要include其他檔案的標頭檔案,來避免main檔案中沒有宣告就使用沒定義的函式導致的報錯,如果要寫的挫點,也可以不include標頭檔案,而在main檔案裡手寫那幾個宣告。
方法二把3個檔案編譯成動態共享庫,再編譯main
gcc -shared -fpic file1.c -o libfile1.so
gcc -shared -fpic file2.c -o libfile2.so
gcc -shared -fpic file3.c -o libfile3.so
gcc main.c -l. -lfile1 -lfile2 -lfile3 -o out
通過so產生的out,依賴so檔案,好處是如果file2.c更新了那麼只需要替換新的libfile2.so,就可以直接執行原來的out獲得新功能,而不需要再次編譯出out替換。
方法三靜態庫的方式
gcc -c file1.c
gcc -c file2.c
gcc -c file3.c
ar -rc liballfiles.a file1.o file2.o file3.o
gcc main.c -l. -lallfiles -o out
大點專案手寫makefile,偷懶點靠ide直接搞定。
看官方文件能獲得更多東西
link options
GCC編譯鏈結多檔案
gcc是linux unix上非常強大的c語言編譯器。並且如今也支援c 的編譯。與vc不同,gcc是完全跨平台的。到目前為止很多任務具都使用gcc作為其編譯環境,比如cocos2d x,android的ndk等等。學習使用gcc編譯器,就是學習它眾多的編譯引數。就是用連字元 連線的引數.因為它的引數...
gcc 編譯 鏈結原理
使用 ld linux.so.作為直譯器,是寫在二進位制檔案中的,比如上面編譯好的 demo 中。另外的,2 其它庫的查詢和載入,則是 ld linux.so.完成的。ldd 可執行檔名 檢視可執行檔案鏈結了哪些 系統動態鏈結庫 strip 可執行檔名 去除符號表可以給可執行檔案 ldconfig ...
gcc 多原始檔的編譯方法
如果有多個原始檔,基本上有兩種編譯方法 假設有兩個原始檔為test.c和testfun.c 1.多個檔案一起編譯 用法 gcc testfun.c test.c o test 作用 將testfun.c和test.c分別編譯後鏈結成test可執行檔案。2.分別編譯各個原始檔,之後對編譯後輸出的目標檔...