⑴ 請問linux下,gcc編譯程序的過程(從讀取源文件到製作可執行程序中間所有過程,越詳細越好)
gcc -S *.c 預處理+反匯編
⑵ 萌新求助、gcc編譯c++動態庫編寫makefile
假設有下面幾個c++文件:
wherewhen.h wherewhen.c
countdown.h countdown.c 包含了math.h, 需要連接庫文件
main.c 主函數, main.c 包含了兩個頭文件 wherewhen.h and countdown.h
1、第一種編譯方法:
g++ -Wall -g wherewhen.c countdown.c main.c -lm -o myprogram
生成可執行文件myprogram
2、第二中編譯方法, 分別編譯各個文件:
g++ -Wall -g -c wherewhen.c
g++ -Wall -g -c countdown.c
g++ -Wall -g -c main.c
g++ -g wherewhen.o countdown.o main.o -lm -o myprogram
⑶ 急!關於LINIX下的GCC和MAKEFILE的基礎問題
桌面右鍵,選打開終端窗口
然後有點象dos一樣做命令行操作,不要管外邊的圖形界面
標准C或C++頭文件基本一致
在命令行里直接gcc test.c
就會生成一默認可執行文件a.out,此時運行./a.out
或gcc -o test test.c
就會生成一可執行文件test,此時運行./test
即可編譯運行
可執行文件在ls後列出所有文件後,能看到上邊的a.out或test顏色有所不同,就是可執行文件,
makefile是可以設置編譯參數,環境變數的類似工程文件的一文件,
直接在命令行里make
即可按照makefile里設置的編譯生成可執行文件或庫文件
下邊為一makefile簡單例子
#--------------------------------------------------------
.SUFFIXES:.cpp
.SUFFIXES:.o
.c.o:
gcc -O -c -g -I$(INCL) $<
#--------------------------------------------------------
OS=UNIX
WORKDIR=$(HOME)
MAKEFILE = makefile
INCL=$(WORKDIR)/incl
LIBS=
OBJ= test.o
all: test
@echo " "
@echo " 編譯成功! "
@echo " "
@echo " "
test: $(OBJ)
@echo " Compiling the program" $@
gcc -o $@ $(OBJ) -I$(INCL) $(LIBS)
@echo " ---$@ compiling done."
@rm *.o
⑷ 怎麼用gcc 和makefile
gcc是編譯軟體,makefile在編譯內核時才用到的好像。
如果你用rpm包,可以
yum install gcc
yum install ****
deb包用的
aptget ****
我也不太熟,不知道是不是
⑸ 如何用arm-linux-gcc編譯驅動程序,Makefile文件怎麼寫
回復
http://bbs.chinaunix.net/viewthread.php?tid=1921952
上面說的方法我還是不是很明白啊,我現在簡直沒辦法了,昨天晚我看到一個資料上面寫的helloworld驅動的例子有兩份Makefile,一份是x86機子上的,一份是arm平台上的,arm上的這樣寫:ifneq
($(KERNELRELEASE),)obj-m:=hello.oelseKDIR/usr/src/kernels/opt/EmbedSky/linux-2.6.30.4/all:
make
-C
$(KDIR)
M=$(PWD)
moles
ARCH=arm
CROSS_COMPLIE=arm-linux-clean:
rm
-f
*.ko
*.o
*.mod.o
*.mod.c
*.symversendif看到後我想應該是要用用於移植的內核來編譯吧,於是我乾脆把資料提供的內核拷貝到PC的Linux系統中然後解壓、編譯直至安裝,然後就再模仿例子寫了Makefile如上所示,然後make後終於通過編譯成功了,然後我再下載到arm板上安裝,卻又出現下面的錯誤:insmod:
can't
insert
'hello.ko':
unknown
symbol
in
mole,
or
unknown
parameter。我就又徹底暈了。到底是怎麼回事,應該怎麼辦的呢?
⑹ linux用gcc編譯
運行結果我不給了,自己看:
直接編譯:
gcc main.c compute.c input.c -o power
運行程序
./power
makefile 最簡單,直觀的的編寫方法:
power:main.o compute.o input.o
cc main.o compute.o input.o -o power
main.o:main.c main.h compute.h input.h
cc -c main.c
compute.o:compute.c compute.h
cc -c compute.c
input.o:input.c input.h
cc -c input.c
.PHONY : clean
clean :
rm -f *.o power
保存後成makefile或Makefile推薦使用後者:
make
想重新編譯前運行:
make clean
make
運行程序:
./power
特別說明:cc,rm命令行前有一個tab符,別搞錯了。cc 在linux上是指向gcc的軟符號鏈接,為了兼容其他系統,我們寫的cc。
makefile有更簡寫但不簡單的寫法,不給出來。你提問這個說明你不會編寫makefile,給出的是最基本用法。有興趣自己看,一天能學完。
⑺ gcc編譯和用makefile編譯有什麼共同和不同
如果有Makefile,最好使用make命令直接編譯,因為你自己使用gcc的話可能有些編譯選項沒有使用全!