概述
本篇主要講述如何在terminal終端命令行中進行C語言程序的編譯和運行。
1 編譯方法
1.1 首先,單文件的編譯和運行
// 編譯,gcc是編譯的命令,-o表示編譯后生成的可執行二進制文件
gcc cfile.c -o cfile
// 運行,很簡單
./cfile
1.2 如果一次性編譯多個文件,實際測試時是這么處理的:
// 編譯,可以在gcc后添加所有的要編譯的文件,比如多個c函數文件,c頭文件,最終編譯為一個可執行二進制文件
gcc cfile1.c cfile2.c chead.h -o cfile
// 運行,和單文件的運行一樣
./cfile
2 編譯時的坑
- 編譯報錯1
/tmp/ccYwIyIb.o:在函數‘main’中:
cfile1.c:(.text+0x37):對‘sqrtf’未定義的引用
或者報錯:Undefined: _sqrt
或者報錯:'sqrt': unresolved external
原因: 源碼中引入了 math.h 頭文件,但是編譯器鏈接器沒找到相應的數學庫。
解決方法: 在編譯時,使用 -lm 標記(flag) 顯式指示鏈接器搜索數學庫。
具體編譯命令為: gcc cfile1.c -o 16.15generic -lm