栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

用gcc生成.a静态库与.so动态库

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用gcc生成.a静态库与.so动态库

目录

一.gcc生成静态库和动态库

1.创建文件test并使用文本编辑器Vim编程程序hello.h,hello.c和main.c。

2.将hello.c编译成.o文件。

3.由.o文件创建静态库。

 4.在程序中使用静态库。

5.由.o文件创建动态库。

6.在程序中使用动态库。

二.Linux下静态库和动态库的生成和使用

 1.新建文件夹test1并打开,使用vim命令编辑文件

2.静态库.a文件的生成和使用。

3.共享库.so文件的生成和使用

 三.实例使用静动态库

 1.新建文件夹hello并打开,使用vim命令编辑文件

2.静态库.a 文件的生成与使用

 3.共享库.so 文件的生成与使用


一.gcc生成静态库和动态库

1.创建文件test并使用文本编辑器Vim编程程序hello.h,hello.c和main.c。
mkdir test//创建文件夹test
cd test//打开文件夹tes

  

 

按Esc键进入命令模式,输入:wq  然后敲击enter保存退出

 以此类推

main.c

#include "hello.h" 
int main() {
hello("everyone"); 
return 0; }

hello.c

#include  
void hello(const char *name) 
{printf("Hello %s!n", name); }                               

hello.h

  

#ifndef HELLO_H 
#define HELLO_H
 void hello(const char *name); 
 #endif //HELLO_H

2.将hello.c编译成.o文件。

3.由.o文件创建静态库。

 

 4.在程序中使用静态库。

5.由.o文件创建动态库。

6.在程序中使用动态库。

 

程序执行时出错,找不到动态库文件,要将动态库文件移动到usr/lib目录下,权限不够,使用命令su到管理员再次移动文件,再执行。

先删除.c和.h外的所有文件,再来创建libmyhello.a和libmyhello.so文件。

 当静态库和动态库重名时,gcc命令优先使用动态库。

二.Linux下静态库和动态库的生成和使用

 1.新建文件夹test1并打开,使用vim命令编辑文件

 A1.c

#include 
void print1(int arg){
printf("A1 print arg:%dn",arg);
}

A2.c

#include 
void print2(char *arg){
printf("A2 printf arg:%sn", arg);
}

A.h

#ifndef A_H
#define A_H
void print1(int);
void print2(char *);
#endif

test.c

#include 
#include "A.h"
int main(){
print1(1);
print2("test");
exit(0);
}

2.静态库.a文件的生成和使用。

3.共享库.so文件的生成和使用

 

 出现错误,可以运行ldd test查看链接情况

移动.so文件位置 

 

 三.实例使用静动态库

 1.新建文件夹hello并打开,使用vim命令编辑文件

 x2x.c

#include
float f1(int a,int b){
float i;
i=a+b;
printf("This is x2x.c!n");
return i;
}

x2y.c

#include
float f2(int a,int b){
float i;
i=a*b;
printf("This is x2x.c!n");
return i;
}

main.c

#include
#include"x.h"
int main(){
        int a=2,b=3;
        float m,n;
        m=f1(a,b);
        printf("%fn",m);
        n=f2(a,b);
        printf("%fn",n);
        return 0;
}

x.h

#ifndef x_H 
#define x_H
float f1(int,int);
float f2(int,int);
#endif
      

2.静态库.a 文件的生成与使用

生成目标文件并用ls命令查看文件生成情况

生成静态库.a 文件

使用.a 库文件,创建可执行程序并运行程序

 3.共享库.so 文件的生成与使用

执行但是会报错

解决方法并再次执行

总结;通过这一次实验我掌握了GCC生成静态库和动态库的命令,当动态库和静态库重名时会优先使用动态库 

 

 参考文献:

(3条消息) gcc生成静态库.a和动态库.so_Harriet的博客-CSDN博客

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/334107.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号