生成静态库的指令 ar
-r 替换归档文件中已有的文件或加入新文件
-d 从归档文件中删除文件
-p 打印在归档文件中找到的文件
-t 显示归档文件中的内容
打包命令
ar -r libbase.aadd.osub.o
查看包中的内容
ar -t libbase.a
完整的静态连接例子
1.编写源码
//文件名:add.c
int add(int a, int b) {
return a + b;
}
gcc -c -static add.c -o add.o
2.打包
ar -r libbase.a add.o
3.使用
// 文件名:main.c
#include <stdio.h>int add(int a, int b); // 使用函数当然要先声明啦。
intsub(int a, int b);int main() {
printf("3 + 1 = %d\n", add(3, 1));
printf("3 - 1 = %d\n", sub(3, 1));return0;
}
4.编译连接成最终可执行文件
gcc -c main.c -o main.o
连接:
gcc main.o libbase.a -o app
共享库的创建与使用
文件树如下:
.
|-bin
|-lib
|-src
|-add.c
|-common.h
|-main.c
|-sub.c
//文件名:common.h
int add(int a, int b);intsub(int a, int b);
//文件名: add.c
int add(int a, int b)
{
return a+b;
}
//文件名: sub.c
int sub(int a, int b)
{return a-b;
}
// 文件名:main.c
#include <stdio.h>#include "common.h"int main() {
printf("3 + 1 = %d\n", add(3, 1));
printf("3 - 1 = %d\n", sub(3, 1));
}