在CentOS系统下,使用GCC编译动态库(共享库)的步骤如下:
hello.c的文件,内容如下:#include <stdio.h>
void hello() {
printf("Hello from the shared library!\n");
}
.o文件)。在这个阶段,我们不需要添加-fPIC选项,因为我们还没有创建共享库。gcc -c hello.c -o hello.o
gcc命令将目标文件链接为共享库。在这个阶段,我们需要添加-fPIC选项来生成位置无关代码(PIC),以便在运行时正确加载共享库。然后,使用-shared选项创建共享库,并指定输出文件名(通常以lib开头)。gcc -fPIC hello.o -o libhello.so
现在,你已经成功创建了一个名为libhello.so的共享库。
main.c的文件,内容如下:#include <stdio.h>
void hello(); // 声明外部函数
int main() {
hello();
return 0;
}
使用以下命令编译main.c文件,并链接到libhello.so共享库:
gcc main.c -L. -lhello -o main
这里,-L.表示在当前目录下查找库文件,-lhello表示链接到libhello.so库(去掉lib前缀和.so后缀)。
LD_LIBRARY_PATH环境变量,以便系统能够找到共享库:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
./main
这将输出:
Hello from the shared library!
至此,你已经成功在CentOS系统下使用GCC编译了一个动态库,并在程序中使用了它。