文章目录
一、静态库.a 文件的生成与使用。
1.1编辑好需要的文件
先用 vim编辑器编辑生成所需要的四个文件
A1.c
#include <stdio.h>
void print1(int arg){
printf("A1 print arg:%d\n",arg);
}
A2.c:
#include <stdio.h>
void print2(char *arg){
printf("A2 printf arg:%s\n", arg);
}
A.h
#ifndef A_H
#define A_H
void print1(int);
void print2(char *);
#endif
test.c:
#include <stdlib.h>
#include "A.h"
int main(){
print1(1);
print2("test");
exit(0); }
1.2生成目标文件(xxx.o)
gcc -c A1.c A2.c
1.3生成静态库.a 文件
ar crv libafile.a A1.o A2.o
1.4、使用.a 库文件,创建可执行程序(若采用此种方式,需保证生成的.a 文件与.c 文件保 存在同一目录下,即都在当前目录下)
gcc -o test test.c libafile.a
./test
二、共享库.so 文件的生成与使用
2.1.生成目标文件(xxx.o)
gcc -c -fpic A1.c A2.c
2.2、生成共享库.so 文件
gcc -shared *.o -o libsofile.so
2.3、使用.so 库文件,创建可执行程序
gcc -o test test.c libsofile.so
./test
发现出现错误,运行 ldd test,查看链接情况
ldd test
发现确实是找不到对应的.so 文件。 这是由于 linux 自身系统设定的相应的设置的原因,即其只在/lib and /usr/lib 下搜索对应 的.so 文件,故需将对应 so 文件拷贝到对应路径
sudo cp libsofile.so /usr/lib
再次执行./test,即可成功运行。
./test
同时可直接使用 gcc -o test test.c -L. -lname,来使用相应库文件