1. 测试代码
/* main.c */
#include "hello.h"
int main(void)
{
hello("everyone");
return 0;
}
/* hello.h */
#ifndef HELLO_H
#define HELLO_H
void hello(const char *name);
#endif
/* hello.c */
#include<stdio.h>
void hello(const char *name)
{
printf("Hello %s\n", name);
}
2.Makefile
#makefile
CC=gcc
CFLAGE=-g -Wall
TARGETS=hello
all: $(TARGETS)
hello: hello.o main.o
.PHONY: clean
clean:
rm -rf *.o $(TARGETS)
3.
.a 静态库(打包文件)
.c 未经过预处理的C源码
.h C头文件
.i 经过预处理的C源码
.o 编译之后产生的目标文件
.s 生成的汇编语言代码
.so 动态库(动态链接库)
$ gcc -E hello.c -o hello.i 生成预处理后的文件 hello.i
$ gcc -S hello.c -o hello.s 生成汇编语言文件 hello.s
$ objdump -s hello.o 查看 hello.o 的二进制码
4.静态链接库
ar rc libmyhello.a hello.o
gcc -o hello main.c libmyhello.a
ar -t libmyhello.a 查看静态库包含的文件
5.动态链接库
gcc -shared -fPIC -o libmyhello.so hello.c