gcc的常用选项
-v
:查看gcc版本
-c
:只编译,生成.o文件,不进行链接
-g
:包含调试信息,方便使用gdb调试
-D
:编译时定义宏
静态库的创建和使用
这里使用命令
ar
,常用的选项是:
-r
:替换归档中已有的文件或加入新文件
-t
:显示归档文件的内容
-x
:从归档文件中解压文件,利用选项-o可以指定解压的文件,如ar -x libfunc.a -o add.o
文件准备:
// file1:add.c
int add(int a, int b) {
return a + b;
}
// file2:sub.c
int sub(int a, int b) {
return a - b;
}
// file3:main.c
#include <stdio.h>
int add(int a, int b);
int sub(int a, int b);
int main() {
printf("3 + 1 = %d\n", add(3, 1));
printf("3 - 1 = %d\n", sub(3, 1));
return 0;
}
1)利用gcc创建.o文件
2)使用ar命令对.o文件进行打包生成.a文件和查看
3)使用静态库.a文件
动态库的创建和使用
文件准备,需要创建这样的目录树:
// file1:add.c
int add(int a, int b) {
return a + b;
}
// file2:sub.c
int sub(int a, int b) {
return a - b;
}
// file3:main.c
#include <stdio.h>
#include "common.h"
int add(int a, int b);
int sub(int a, int b);
int main() {
printf("3 + 1 = %d\n", add(3, 1));
printf("3 - 1 = %d\n", sub(3, 1));
return 0;
}
// file4:common.h
int add(int a, int b);
int sub(int a, int b);
1)利用gcc创建.so文件到指定目录lib
这里使用到了两个选项,分别是
-fpic
和-shared
2)使用动态库
可以使用ldd
命令查看该可执行文件含有什么动态库
执行该可执行文件
reference to :link