1.編寫一個主程序,在主程序中調用某個子程序
thank.c#include <stdio.h>int main(void){ 如何將兩個程序連接到一起,在linux的終端中執行命令gcc -c thank.c thank2.c //gcc -c xxx.c 會生成.o目標文件gcc -o thank thank.o thank2.o //gcc -o xxx.o會生成可執行二進制文件,若沒有指定名字,默認為a.out./thank //執行ll thank* //查看thank的文件顯示警告信息 gcc -Wall -c thank.c thank2.c 2.調用外部函數:加入鏈接的函數庫
sin.c中#include <stdio.h>int main(void){ float value; value = sin(3.14/2); printf("%f/n",value);}若直接使用gcc -c sin.c會出現無法找到sin函數的錯誤(undefines reference to sin) 所以 必須要連接必要的庫(C語言里面的sin函數在linm.so這個函數庫中)
gcc -c sin.c -lm -L/lib -L/usr/lib總結gcc的用法
//僅編譯生成鏈接文件gcc -c hello.c//直接編譯生成可執行文建(不加參數./a.out)gcc hello.c//在編譯的時候依據操作環境給予優化執行速度gcc -O hello.c -c//在制作二進制文件的時候,將鏈接的函數庫與相關路徑填入gcc sin.c -lm -L/usr/lib -I/usr/include//-lm是指libm.so或libm.a這個函數庫文件//-L后面接的是路徑是剛才上面那個函數庫的搜索目錄//-I后面接的是源碼內的include文件所在目錄//生成某個特定名字的可執行文件gcc -o hello hello.c//顯示警告信息gcc -o hello hello.c -Wall2.Makefile的基本用法 一、基本規則: (1)makefile中#表示批注 (2)在命令行前一定要用 (3)目標與相關文件之間用:隔開
vi makefilemain:main.o hh.o sin.o cos.o gcc -o main main.o hh.o sin.o cos.oclean: rm -f main main.o hh.o sin.o cos.o想要先清除信息在建立main信息,可以make clean main 二、可以使用shell script簡化腳本
LIBS = -lmOBJS = main.o hh.o sin.o cos.omain:${OBJS} gcc -o main ${OBJS} ${LIBS}clean: rm -f main ${OBJS}新聞熱點
疑難解答