文章目录

  • 一、linux下gcc生成静态库和动态库以及库文件的使用
    • 1.准备过程
    • 2.静态库的创建及使用
      • (1)创建静态库
      • (2)程序中使用静态库
    • 3.动态库的创建及使用
      • (1)创建动态库
      • (2)程序中使用动态库
  • 二、实例练习
    • 实例一
    • 实例二

一、linux下gcc生成静态库和动态库以及库文件的使用

1.准备过程

(1)创建一个目录
(2)在目录下创建三个文件
hello.h

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

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;
}

(3). gcc编译得到.o文件

gcc -c hello.c

实例如下图

2.静态库的创建及使用

(1)创建静态库

创建静态库的工具:ar
静态库文件命名规范:以lib作为前缀,是.a文件

ar -crv libmyhello.a hello.o

(2)程序中使用静态库

方法一:

gcc -o hello main.c -L.–lmyhello

自定义的库时,main.c还可放在-L.和–lmyhello之间,但是不能放在它俩之后,否则会提示 myhello没定义,但是是系统的库时,如 g++ -o main(-L/usr/lib) -lpthread main.cpp就不出错。

方法二:

gcc main.c libmyhello.a -o hello


方法三:
先生成 main.o:

gcc -c main.c

再生成可执行文件:

gcc -o hello main.o libmyhello.a

实例中由于把main.o中的o打成数字0造成错误

3.动态库的创建及使用

(1)创建动态库

gcc -shared -fPIC -o libmyhello.so hello.o

(2)程序中使用动态库

gcc -o hello main.c -L. -lmyhello

结果与静态库的结果相同

二、实例练习

实例一

代码如下
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<stdio.h>
#include"A.h"
int main()
{print1(1);print2("test");exit(0);
}

操作步骤:

实例二

代码如下:
sub1.c

float x2x(int a,int b)
{float c=0;c=a+b;return c;
}

sub2.c

float x2y(int a,int b)
{float c=0;c=a/b;return c;
}

sub.h

#ifndef SUB_H
#define SUB_H
float x2x(int a,int b);
float x2y(int a,int b);
#endif

main.c

#include<stdio.h>
#include"sub.h"
void main()
{int a,b;printf("Please input the value of a:");scanf("%d",&a);printf("Please input the value of b:");scanf("%d",&b);printf("a+b=%.2f\n",x2x(a,b));printf("a/b=%.2f\n",x2y(a,b));
}

操作步骤:

用 gcc生成静态库和动态库以及静态库和动态库的使用相关推荐

  1. linux 中如何将文件粘贴到usr下的lib内,学会在Linux下GCC生成和使用静态库和动态库...

    一.基本概念1.1什么是库 在windows平台和linux平台下都大量存在着库. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的平台不同(主 ...

  2. Linux下Gcc生成和使用静态库和动态库详解

    参考文章:http://blog.chinaunix.net/uid-23592843-id-223539.html 一.基本概念 1.1什么是库 在windows平台和linux平台下都大量存在着库 ...

  3. Linux下GCC生成和使用静态库和动态库详解(二)

    2.1准备好测试代码hello.h.hello.c和main.c: hello.h(见程序1)为该函数库的头文件. hello.c(见程序2)是函数库的源程序,其中包含公用函数hello,该函数将在屏 ...

  4. Linux下Gcc生成和使用静态库和动态库详解(转)

    一.基本概念 1.1什么是库 在windows平台和linux平台下都大量存在着库. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的平台不同( ...

  5. gcc生成静态库.a和动态库.a以及Ubuntu18.04下opencv3.4.11安装及示例

    目录 一.用gcc生成静态库和动态库 (一)hello示例使用库 1.准备过程 2.静态库使用 3.动态库的使用 4.静态库与动态库比较 (二)示例1使用库 二.opencv安装以及使用 (一)认识o ...

  6. gcc生成静态库和动态库,以及OpenCV3.4.11的安装和实例

    文章目录 一.用gcc生成静态库和动态库 (1).hello使用库实例 1.创建目录并编写hello代码 2.gcc编译得到.o文件 3.静态库的使用 4.动态库的使用 5.静态库与动态库的对比 (2 ...

  7. 用gcc生成静态库和动态库和使用opencv库编写打开摄像头压缩视频

    文章目录 一.用gcc生成静态库和动态库 1.编辑生成程序hello.h.hello.c.main.c 2.将hello.c生成.o文件 3.使用静态库 4.动态库的使用 二.a与.so库文件的生成与 ...

  8. GCC生成静态库和动态库

    目录 1)阅读.理解和学习材料"用gcc生成静态库和动态库.pdf"和"静态库.a与.so库文件的生成与使用.pdf",请在Linux系统(Ubuntu)下如实 ...

  9. Linux下用gcc生成静态库和动态库及练习使用OpenCV

    我们通常把一些公用函数制作成函数库,供其它程序使用.函数库分为 静态库和动态库两种.静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库.动态库在程序编译时并不会被连接到目标代码中,而 ...

最新文章

  1. 粒子系统模拟-计算机图形学 豆瓣,基于粒子系统的瀑布模拟与实现
  2. 操作系统pv操作学习总结
  3. 点击率预估又有新花样?
  4. 通过java提供的URL类包读取网上的文件
  5. python字符串split_python字符串之split
  6. 对Spring的IoC和DI最生动的解释
  7. paip.导入数据英文音标到数据库mysql为空的问题之道解决原理
  8. java下载zip文件
  9. 中国省-市-县(区)三级城市数据(json和数组)
  10. 十折交叉验证和混淆矩阵
  11. 《大数据之路:阿里巴巴大数据实践》-第2篇 数据模型篇 -第9章 阿里巴巴数据整合及管理体系
  12. 计算机电脑怎么开热点,怎么在电脑上开热点?电脑开热点的两种方法介绍
  13. 第7章第37节:七图排版:一张背景六张拼合布局 [PowerPoint精美幻灯片实战教程]
  14. Java工场模式+反射写出通用代码
  15. php web访问数据库,百宝箱之介绍PHP Web查询数据库基本步骤
  16. svg html5 编辑工具,HTML5之SVG
  17. 详解Docker的基本原理与实践操作
  18. PostQuitMessage
  19. P问题、NP问题、NPC问题、NP难问题的概念[zz]
  20. 中国工程院新增选54名院士

热门文章

  1. BeanCopier使用说明
  2. WIN10安装postgresql启动服务失败解决
  3. 【C++】STL容器
  4. 梯度下降、牛顿法、拟牛顿法
  5. 数据库 之创建新用户
  6. matlab如何求矩阵行列式
  7. 高级程序员之抽象能力模型
  8. 如何用Python识别图片中的文字?
  9. Linux:生成core的几种方式
  10. 光纤收发器常见故障问题的时候我们该如何解决呢