下面是c編譯指令碼
name= yuv_connect
dir_inc=./include
dir_src=./src
dir_obj=./output/obj
dir_bin=./output/bin
cc = gcc
#cc = g++
## debug flag
dbg_enable = 0
include=-i$(dir_inc)
## debug for debug info, when use gdb to debug
ifeq (1, $)
cflags += -d_debug -o0 -g -ddebug=1
endif
## get all include path
cflags += $(foreach dir, $(dir_inc), -i$(dir))
cflags += -std=c++11
cflags += -lm
target=$(dir_bin)/$(name)
#src=$(wildcard $/*.c)
#src += $(wildcard $(dir_src)/*.cpp)
src += $(wildcard $(dir_src)/*.c)
#objs=$(src:$(dir_src)/%.c=$(dir_obj)/%.o)
objs +=$(src:$(dir_src)/%.cpp=$(dir_obj)/%.o)
$(target):$(objs)
@echo 'depend file "$^" ...'
$(cc) $(cflags) -o $(target) $(objs)
#$(dir_obj)/%.o:$/%.cpp
$(dir_obj)/%.o:$/%.c
@echo 'compiling object file "$@" ...'
$(cc) $(cflags) -c -o $@ $<
clean:
rm -fr $(objs) $(target);
rm -fr $(dir_obj)/* $(dir_bin)/*;
test:
@echo $(src)
@echo $(objs)
linux下用c程式設計 sqrt函式找不到
使用gcc編譯時,需要在後面加上引數-lm,m即math的簡寫,否則會報sqrt函式找不到錯誤。就像寫posix thread的程式時,編譯時需要加上-lpthread 一樣。
c++編譯指令碼:
name= yuv_connect
dir_inc=./include
dir_src=./src
dir_obj=./output/obj
dir_bin=./output/bin
#cc = gcc
cc = g++
## debug flag
dbg_enable = 0
include=-i$(dir_inc)
## debug for debug info, when use gdb to debug
ifeq (1, $)
cflags += -d_debug -o0 -g -ddebug=1
endif
## get all include path
cflags += $(foreach dir, $(dir_inc), -i$(dir))
cflags += -std=c++11
target=$(dir_bin)/$(name)
#src=$(wildcard $/*.c)
src += $(wildcard $(dir_src)/*.cpp)
#objs=$(src:$(dir_src)/%.c=$(dir_obj)/%.o)
objs +=$(src:$(dir_src)/%.cpp=$(dir_obj)/%.o)
$(target):$(objs)
@echo 'depend file "$^" ...'
$(cc) $(cflags) -o $(target) $(objs)
$(dir_obj)/%.o:$/%.cpp
@echo 'compiling object file "$@" ...'
$(cc) $(cflags) -c -o $@ $<
clean:
rm -fr $(objs) $(target);
rm -fr $(dir_obj)/* $(dir_bin)/*;
test:
@echo $(src)
@echo $(objs)
linux核心模組編譯makefile
1 編譯進核心的模組 如果需要將乙個模組配置進核心,需要在makefile中進行配置 obj y foo.o 2 編譯可載入的模組 所有在配置檔案中標記為 m的模組將被編譯成可載入模組.ko檔案。如果需要將乙個模組配置為可載入模組,需要在makefile中進行配置 obj m foo.o 3 模組編...
linux 核心模組編譯的Makefile模板
編譯的原始檔是hello.c 所以這裡obj m hello.o 其他名稱類似 makefile的檔名首字母必須大寫,不然編譯會出錯 模板的其他內容大概知道一下就行了,不用記住,模組編譯的makefile是通用的,下次用的時候copy一下就可以了 obj m hello.o kerneldir li...
Linux 用makefile編譯程式
makefile可以方便快捷的編譯我們編寫的程式,也可以處理一些檔案,例如刪除檔案,檢視檔案。初學者對makefile的掌握如下 makefile的結構 第一行 編譯完成的檔名稱 編譯檔案所需的原始檔 第二行 游標在行首的時候按一下tab鍵,一般情況下,在vim下按完tab後,之後的字母會變成紅色 ...