MINGW64下的Makefile环境调用dll库

【前言】

        X86的64位PC机上,一般使用eclipse+mingw的编辑和编译环境来实现无界面和有界面的开发工作,之前使用eclipse搭建环境需要用到dll库,而eclipse使用mingw编译环境对dll的支持不是很好,一直无法正常添加dll库到工程中去,所以摒弃了eclipse的编辑界面,直接使用Makefile+mingw64来编译链接,直接使用source insight来编辑代码,非常清爽。

【目的】

        Makefile + Mingw64的环境,并调用dll动态库,来实现msys dos环境的c程序运行。

【方案】

         自己实现Makefile文件,代码目录组织如下:

         

        build存放.o文件,heads存放头文件,libs存放dll文件,src存放c源文件。

【实现】

        Makefile的具体内容如下:

# flags
CC = gcc
#CFLAGS = -Wall
LFLAGS = 

# args
RELEASE =0
BITS = 64
OBJ_DIR := build
INC_DIR := heads
SRC_DIR := src
LIB_DIR := libs
RUN_DIR := run

# [args] 生成模式. 0代表debug模式, 1代表release模式. make RELEASE=1.
ifeq ($(RELEASE),0)
    # debug
    CFLAGS += -g -I$(INC_DIR) -o0
else
    # release
    CFLAGS += -static -I(INC_DIR) -O3 -DNDEBUG
    LFLAGS += -static
endif

# [args] 程序位数. 32代表32位程序, 64代表64位程序, 其他默认. make BITS=32.
ifeq ($(BITS),32)
    CFLAGS += -m32
    LFLAGS += -m32
else
    ifeq ($(BITS),64)
        CFLAGS += -m64
        LFLAGS += -m64
    else
    endif
endif

.PHONY : all clean

# files
TARGETS := $(OBJ_DIR)\auto_test
OBJS = $(OBJ_DIR)/atest.o
OBJS += $(OBJ_DIR)/putil.o
OBJS += $(OBJ_DIR)/xml.o
OBJS += $(OBJ_DIR)/dlog.o
LIBS = $(LIB_DIR)/*.dll

all : $(TARGETS)
	move /Y $(OBJ_DIR)\\*.exe $(RUN_DIR)
$(TARGETS) : $(OBJS) $(LIBS)
	$(CC) $(LFLAGS) -o $@ $^

$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
	$(CC) $(CFLAGS) -c $< -o $@
	
clean :
	del /F /S /Q $(OBJ_DIR)\*.*

gcc编译链,需要先安装好mingw64的交叉编译链和path的系统环境变量设置。dll直接作为目标文件来参与链接,且不需要使用-l来指定以来的系统库。直接make和make clean来方便编译。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值