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