天天看点

Linux-C编程编写C程序编译C程序Make工具Makefile文件Makefile语法

编写C程序

vim hello.c
           
#include <stdio.h>

 int main(int argc, char *args[])
 {
         printf("Hello World!\n");
         return 0;
 }
~                        
           

编译C程序

gcc hello.c -o hello
           

Make工具Makefile文件

add.c 文件

#include <stdio.h>
#include "input.h"
#include "calcu.h"

int main(int argc, char *args[])
{
         int a,b,sum;
        input_int(&a,&b);
        sum = calcu(a, b);
        printf("%d\n", sum);
        return 0;
 }
~             
           

input.c 文件内容如下:

#include <stdio.h>
#include "input.h"
void input_int(int *a, int *b)
{
	printf("input two num:");
	scanf("%d %d", a, b);
	printf("\r\n");
}
           

calcu.c 文件内容如下:

#include "calcu.h"
int calcu(int a, int b)
{
	return (a + b);
}
           

文件 input.h 内容如下:

#ifndef _INPUT_H
#define _INPUT_H

void input_int(int *a, int *b);
#endif
           

文件 calcu.h 内容如下:

#ifndef _CALCU_H
#define _CALCU_H

int calcu(int a, int b);
#endif
           

如果使用gcc的方法进行编译

gcc main.c calcu.c input.c -o main
           

Makefile:

main: main.o input.o calcu.o
	gcc -o main main.o input.o calcu.o
main.o: main.c
	gcc -c main.c
input.o: input.c
	gcc -c input.c
calcu.o: calcu.c
	gcc -c calcu.c

clean:
	rm *.o
	rm main
           

Makefile语法

目标…... : 依赖文件集合……
	命令 1
	命令 2
	……
           

命令列表中的每条命令必须以 TAB 键开始,不能使用空格

Makefile 变量

#Makefile 变量的使用

objects = main.o input.o calcu.o
main: $(objects)
	gcc -o main $(objects)
           

1、赋值符“=”

使用“=”在给变量的赋值的时候,不一定要用已经定义好的值,也可以使用后面定义的值

2、赋值符“:=”

不会使用后面定义的变量,只能使用前面已经定义好的,这就是“=”和“:=”两个的区别。

3、赋值符“?=”

如果变量 curname 前面没有被赋值,那么此变量就是“当前的值”,

如果前面已经赋过值了,那么就使用前面赋的值。

4、变量追加“+=”

需要给前面已经定义好的变量添加一些字符串进去,此时就要使用到符号“+=”