linux覆盖程序,Linux平台代码覆盖率测试-编译过程自动化及对链接的解释

PP = cpp#预处理程序

CC = gcc#编译程序

AS = as#汇编程序

CXX_FLAGS += -g -Wall -Wextra

ASM_FLAGS = -S

COV_FLAGS=-fprofile-arcs -ftest-coverage#如果不加入覆盖率测试选项,只需将其值置为空即可

LINK_GCOV=-lgcov#此处链接gcov静态库,如不需要,将其值置为空即可

TARGET_FILE =test#test即是TARGET_FILE全局变量的值,如要用到别的程序,只需修改此值即可使用

SRC_FILE = $(TARGET_FILE).c

CPP_FILE = $(TARGET_FILE).i

ASM_FILE = $(TARGET_FILE).s

OBJ_FILE = $(TARGET_FILE).o

EXE_FILE = $(TARGET_FILE)

TARGET = $(CPP_FILE) $(ASM_FILE) $(OBJ_FILE) $(EXE_FILE)

CLEANUP = rm -f $(TARGET)

all : $(TARGET)

clean :

$(CLEANUP)

#如果是其他的平台或GCC,此3路径或许需要修改才能使用

COLLECT2_DIR=/usr/libexec/gcc/i386-RedHat-linux/4.1.2

CRTLIB_DIR=/usr/lib/gcc/i386-redhat-linux/4.1.2

LIB_DIR=/usr/lib

COLLECT2=$(COLLECT2_DIR)/collect2

LDSO=/lib/ld-linux.so.2

CRT1=$(LIB_DIR)/crt1.o

CRTI=$(LIB_DIR)/crti.o

CRTBEGIN=$(CRTLIB_DIR)/crtbegin.o

CRTEND=$(CRTLIB_DIR)/crtend.o

CRTN=$(LIB_DIR)/crtn.o

LINK_FLAGS=--eh-frame-hdr --build-id -m elf_i386 --hash-style=gnu -dynamic-linker

LINK_LIBS=-lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed

SEARCH_DIR=-L$(CRTLIB_DIR) -L$(CRTLIB_DIR) -L$(LIB_DIR)

$(TARGET):

$(CPP_FILE): $(SRC_FILE)

$(PP) $^ -o $@

$(ASM_FILE): $(CPP_FILE)

$(CC) $(ASM_FLAGS)$(COV_FLAGS)$^ -o $@

$(OBJ_FILE): $(ASM_FILE)

$(AS) $^ -o $@

$(EXE_FILE): $(OBJ_FILE)

$(COLLECT2) $(LINK_FLAGS) $(LDSO)$(OBJ_FILE)$(CRT1) $(CRTI) $(CRTBEGIN) $(SEARCH_DIR)$(LINK_GCOV)$(LINK_LIBS) $(CRTEND) $(CRTN) -o $@

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值