linux 編譯makefile指令碼

2021-09-16 19:37:14 字數 2436 閱讀 8146

下面是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後,之後的字母會變成紅色 ...