Makefile完全攻略非常经典
来源:互联网 发布:中航618知乎 编辑:程序博客网 时间:2024/05/16 15:03
记linux网络编程中Makefile实例有感:
工程中的代码如下 add_int.c add_float.c sub_int.c sub.float.c add.h sub.h main.c
/*add_int.c*/
int add_int(int a, int b)
{
return a+b;
}
/*add_float.c*/
int add_float(int a, int b)
{
return a+b;
}
/*sub_int.c*/
int sub_int(int a, int b)
{
return a-b;
}
/*sub_float.c*/
int sub_float(int a, int b)
{
return a-b;
}
/*add.h*/
#ifdef __ADD_H__
#define __ADD_H__
extern float add_float(float a, float b);
extern int add_int(int a, int b);
#endif /*__ADD_H__*
*sub.h*/
#ifdef __ADD_H__
#define __ADD_H__
extern float sub_float(float a, float b);
extern int sub_int(int a, int b);
#endif /*__ADD_H__*
/*main.c*/
#include <stdio.h>
#include "add.h"
#include "sub.h"
int main(void)
{
int a = 10, b = 12;
float x = 1.23456, y = 9.87654;
printf("int a+b IS:%d/n",add_int(a,b));
printf("float a+b IS:%d/n",add_float(a,b));
printf("int a-ib IS:%d/n",sub_int(a,b));
printf("float a-b IS:%d/n",sub_float(a,b));
}
没有使用规则写Makefile如下:
cacu:add_int.o add_float.o sub_int.o sub_float.o main.o
arm-softfloat-linux-gnu-gcc -o cacu add_int.o add_float.o sub_int.o /
sub_float.o main.o
add_int.o:add_int.c add.h
arm-softfloat-linux-gnu-gcc -c -o add_int.o add_int.c
add_float.o:add_float.c add.h
arm-softfloat-linux-gnu-gcc -c -o add_float.o add_float.c
sub_int.o:sub_int.c sub.h
arm-softfloat-linux-gnu-gcc -c -o sub_int.o sub_int.c
sub_float.o:sub_float.c sub.h
arm-softfloat-linux-gnu-gcc -c -o sub_float.o sub_float.c
main.o:main.c add.h sub.h
arm-softfloat-linux-gnu-gcc -c -o main.o main.c -Iadd -Isub
clean:
rm -f cacu add_int.o add_float.o sub_int.o sub_float.o main.o
用户自定义变量写Makefile如下:
CC = arm-softfloat-linux-gnu-gcc (CC被定义为arm-softfloat-linux-gnu-gcc)
CFLAGS = -Iadd -Isub -O2 (加入头文件搜索路径sub和add)
OBJS = add_int.o add_float.o sub_int.o sub_float.o main.o (OBJS表示目标文件)
TARGET = cacu (最终生成目标)
RM = rm -f (删除的命令)
$(TARGET):$(OBJS)
$(CC) -o $(TARGET) $(OBJS) $(CFLAGS)
$(OBJS):%.o:%.c (将OBJS中所有扩展名为.o的文件替换为.c的文件)
$(CC) -c $(CFLAGS) $< -o $@ (编译生成目标文件)
clean:
-$(RM) $(TARGET) $(OBJS)
预定义变量写Makefile如下:
CC = arm-softfloat-linux-gnu-gcc
CFLAGS = -Iadd -Isub -O2
OBJS = add_int.o add_float.o sub_int.o sub_float.o main.o
TARGET = cacu
RM = rm -f
$(TARGET):$(OBJS)
$(CC) -o $(TARGET) $(OBJS) $(CFLAGS)
#$(OBJS):%.o:%.c
# $(CC) -c $(CFLAGS) $< -o $@
clean:
rm $(TARGET)
rm $(OBJS)
使用自动变量写Makefile如下:
CC = arm-softfloat-linux-gnu-gcc
CFLAGS = -Iadd -Isub -O2
OBJS = add_int.o add_float.o sub_int.o sub_float.o main.o
TARGET = cacu
$(TARGET):$(OBJS)
# $(CC) $@ -o $< $(CFLAGS)
$(CC) -o $(TARGET) $(OBJS) $(CFLAGS)
$(OBJS):%.o:%.c
$(CC) $< -c $(CFLAGS) -o $@
clean:
-$(RM) $(TARGET) $(OBJS)
- Makefile完全攻略非常经典
- Linux makefile 教程 非常详细,且易懂 完全转载
- linux makefile 全攻略
- TOMCAT完全攻略
- 极品飞车8 完全攻略
- 注册表修改完全攻略
- 外挂编写完全攻略
- TOMCAT完全攻略
- TOMCAT完全攻略
- 深圳租房完全攻略
- 共享上网完全攻略
- oracle完全卸载攻略
- 《文明3》完全攻略
- 共享上网完全攻略
- 网页加密完全攻略
- 搭讪mm完全攻略
- 外挂编写完全攻略
- 网页加密完全攻略
- oracle大对象
- Flash与数学:椭球面
- 如何安装 Android SDK
- HOW TO INSTALL subtitleeditor
- 操作系统
- Makefile完全攻略非常经典
- 将一个表的数据插入到另一个表中
- Map Reduce – the Free Lunch is not over?
- Web 架构师的能力
- 网络协议 P2p 学习 - Shareaza
- 如何在ASP.NET中使用弹出对话框?
- Ranorex
- 牛B的人说的话
- 在SQL 2005中用T-SQL插入中文数据时出现的问号或乱码的解决方案