Makefile(用户态) && gcc

1. gcc -m32 -S 源文件  可编译出C程序的汇编版本


2. Makefile example

ifeq ($(V), WIN)
  CC = /xxx/xxx/mingw32/bin/i386-mingw32-gcc 
  DLLTOOL=/xxx/xxx/mingw32/bin/i386-mingw32-dlltool
  LIBS = -lwsock32
  TARGET_EXE = http_get.exe
  TARGET_LIB = http_get.dll
  TARGET_DEF = http_get.def
else
  CC = gcc 
  LIBS =
  TARGET_EXE = http_get
  TARGET_LIB = http_get.so
endif

CFLAGS = -g -Wall -Wextra
OBJS_LIB = tcp.o http_get.o
OBJS_EXE = main.o
#OBJS = tcp.o http_get.o main.o

ALL: $(TARGET_LIB) $(TARGET_EXE) $(TARGET_DEF)

$(TARGET_LIB): $(OBJS_LIB)
  $(CC) $(CFLAGS) -shared -o $@ $^ $(LIBS) 

$(TARGET_EXE): $(OBJS_EXE) $(TARGET_LIB)
  $(CC) $(CFLAGS) -o $@ $^ 

$(TARGET_DEF): http_get.o
  $(DLLTOOL) -z $@_tmp --export-all-symbols $^ 
  sed 's/ @ [0-9]*//g' $@_tmp > $@
  rm -f $@_tmp 

clean:
  rm -f *.o
  rm -f $(TARGET_EXE) $(TARGET_LIB) $(TARGET_DEF)

3. 变量

$*
  不包含扩展名的目标文件名称。
  $+
  所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。
  $<
  第一个依赖文件的名称。
  $?
  所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚。
  $@
  目标的完整名称。
  $^
  所有的依赖文件,以空格分开,不包含重复的依赖文件。
  $%

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

duanbeibei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值