1.创建要编译成库的源码文件和头文件
头文件:
#ifndef _HELLO_H_
#define _HELLO_H_
#include<stdio.h>
void display_hello();
#endif
源码:
#include "hello.h"
void display_hello()
{
printf("hello world!");
}
编译生成动态库:
gcc hello.c -fPIC -shared -o libhello.so
–fPIC:表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的所以动态载入时是通过代码拷贝的方式来满足不同进程的需要,
而不能达到真正代码段共享的目的。
–shared:定义编译成动态库的名字

2.链接使用编译好的动态库
链接使用的代码
#include<stdio.h>
#include"hello.h"
int main()
{
display_hello();
return 0;
}
gcc main.c -o hello ./libhello.so
运行结果:

本文详细介绍了如何使用GCC编译器将C语言源码编译成动态库,并展示了如何链接并使用该动态库。从头文件的定义到源码的实现,再到编译指令的解释,最后是动态库的链接与运行结果,全程覆盖了动态库的创建与使用流程。

被折叠的 条评论
为什么被折叠?



