用gcc生成静态库和动态库并链接生成可执行文件
一、用gcc生成静态库和动态库
1.源程序准备
创建并以以下名字命名文件:
-
Hello.h
#ifndef HELLO_H #define HELLO_H void Hello(const char*name); #endif -
Hello.c
#include<stdio.h> void Hello(const char*name) { printf("Hello%s!\n",name); } -
main.c
#include"Hello.h" int main() { Hello("everyone"); return 0; }
2.将hello.c编译成.o文件
gcc-c Hello.c //进行编译 ls //查看当前目录内是否生成Hello.o文件

3.生成与使用静态库
ar-crv libHello.a Hello.o
gcc -o Hello main.c -L. -lHello
gcc-o main.c libHello.a -o Hello
main.o gcc -c main.c
gcc -o Hello main.c libHello.a
验证静态库的特点。
在删除静态库后运行可执行文件,程序依旧正常运作。这表明静态库不影响程序的运行,也表明静态库在程序编译时就已经与代码链接。
rm libHello.a
4.生成与使用动态库
(1)创建动态库
gcc -shared -fPIC -o libHello.so Hello.o
(2)执行动态库
sudo mv libmyhello.so /usr/lib //启用管理员权限移动文件到对应文件夹内,否则无法找到文件执行
gcc -o Hello main.c -L. -lHello
gcc编译得到.o文件 gcc -c Hello.c
创建静态库 ar -crv libHello.a Hello.o
创建动态库 gcc -shared -fPIC -o libHello.so Hello.o
使用库生成可执行文件 gcc -o Hello main.c -L. -lHello
执行可执行文件 ./Hello

本文讲述了如何用GCC创建C++的静态库和动态库,包括源码准备、编译、链接过程,并通过实例说明了两者在程序中的应用和差异。









6092

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



