小白日記:
1:遇到的錯誤
編譯.o檔案時出現以下錯誤處理方式
x86_64-linux-gnu/crt1.o: In function `_start’
編譯鏈接動態庫時需要加-shared。
同時記錄多個.a和.so鏈接成.so,.a的編譯需要增加-fPIC。
gcc -shared hello.o -o hello
2:腳本語言:makefile
Linux c/C++ 必須使用的已經一個編譯腳本
Makefile 大型專案開發 demo
第一次層:
第二次層:使用的時候-用$(變數名) 替換
第三次層:隱含規則 %.c %.o *.c *.o 所有的.o檔案 所有的.c檔案
第四次層:通配符 $^ 所有的目標檔案 $@所有的依賴檔案 $< 所有的依賴檔案的第一個檔案
第五次層:
rm -rf hello.o hello.i hello.s //選擇要洗掉的檔案
# 1:#號是注釋
第一次層:顯示規則
# 目標檔案:依賴檔案
# [TAB]命令
#
#第一個目標檔案是最終檔案!!!遞回
#
#rm - rf hello.o hello.i hello.S hello
#偽目標: .PHONY
第二次層:變數=(替換) , += (追加) , :=(恒等于)
TAR = test
OBJ = circle.o cube.o hello.s
CC := gcc
RMRF:=rm -rf
test:circle.o cube.o main.o $(TAR):$(OBJ)
gcc -shared circle.o cube.o main.o -o test $(CC) -shard $(OBJ) -O $(TAR)
circle.o:circle.c circle.o:circle.c
gcc -c circle.c -o circle.o $(CC) -c circle.c -o circle.o
cube.o:cube.c cube.o:cube.c
gcc -c cube.c -o cube.o $(CC) -c cube.c -o cube.o
main.o:main.c main.o:main.c
gcc -c main.c -o main.o $(CC) -c main.c -o main.o
.PHONY: .PHONY:
clearall: clearall:
rm -rf circle.o cube.o main.o test rm -rf circle.o cube.o main.o test
clear: clear:
RMRF circle.o cube.o main.o rm -rf $(OBJ)
第三次層:
%.o:%.c
$(CC) -c %.c -o %.o
第四次層:通配符 $^ 所有的目標檔案 $@所有的依賴檔案 $< 所有的依賴檔案的第一個檔案
$(CC) -c circle.c -o circle.o
$(CC) -c $@ -o $^
$(RMRF) circle.o cube.o main.o
$(RMRF) $(OBJ)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/255011.html
標籤:專題技術討論區
