用 gcc生成静态库和动态库以及静态库和动态库的使用
文章目录
- 一、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生成静态库和动态库以及静态库和动态库的使用相关推荐
- linux 中如何将文件粘贴到usr下的lib内,学会在Linux下GCC生成和使用静态库和动态库...
一.基本概念1.1什么是库 在windows平台和linux平台下都大量存在着库. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的平台不同(主 ...
- Linux下Gcc生成和使用静态库和动态库详解
参考文章:http://blog.chinaunix.net/uid-23592843-id-223539.html 一.基本概念 1.1什么是库 在windows平台和linux平台下都大量存在着库 ...
- Linux下GCC生成和使用静态库和动态库详解(二)
2.1准备好测试代码hello.h.hello.c和main.c: hello.h(见程序1)为该函数库的头文件. hello.c(见程序2)是函数库的源程序,其中包含公用函数hello,该函数将在屏 ...
- Linux下Gcc生成和使用静态库和动态库详解(转)
一.基本概念 1.1什么是库 在windows平台和linux平台下都大量存在着库. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的平台不同( ...
- gcc生成静态库.a和动态库.a以及Ubuntu18.04下opencv3.4.11安装及示例
目录 一.用gcc生成静态库和动态库 (一)hello示例使用库 1.准备过程 2.静态库使用 3.动态库的使用 4.静态库与动态库比较 (二)示例1使用库 二.opencv安装以及使用 (一)认识o ...
- gcc生成静态库和动态库,以及OpenCV3.4.11的安装和实例
文章目录 一.用gcc生成静态库和动态库 (1).hello使用库实例 1.创建目录并编写hello代码 2.gcc编译得到.o文件 3.静态库的使用 4.动态库的使用 5.静态库与动态库的对比 (2 ...
- 用gcc生成静态库和动态库和使用opencv库编写打开摄像头压缩视频
文章目录 一.用gcc生成静态库和动态库 1.编辑生成程序hello.h.hello.c.main.c 2.将hello.c生成.o文件 3.使用静态库 4.动态库的使用 二.a与.so库文件的生成与 ...
- GCC生成静态库和动态库
目录 1)阅读.理解和学习材料"用gcc生成静态库和动态库.pdf"和"静态库.a与.so库文件的生成与使用.pdf",请在Linux系统(Ubuntu)下如实 ...
- Linux下用gcc生成静态库和动态库及练习使用OpenCV
我们通常把一些公用函数制作成函数库,供其它程序使用.函数库分为 静态库和动态库两种.静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库.动态库在程序编译时并不会被连接到目标代码中,而 ...
最新文章
- 粒子系统模拟-计算机图形学 豆瓣,基于粒子系统的瀑布模拟与实现
- 操作系统pv操作学习总结
- 点击率预估又有新花样?
- 通过java提供的URL类包读取网上的文件
- python字符串split_python字符串之split
- 对Spring的IoC和DI最生动的解释
- paip.导入数据英文音标到数据库mysql为空的问题之道解决原理
- java下载zip文件
- 中国省-市-县(区)三级城市数据(json和数组)
- 十折交叉验证和混淆矩阵
- 《大数据之路:阿里巴巴大数据实践》-第2篇 数据模型篇 -第9章 阿里巴巴数据整合及管理体系
- 计算机电脑怎么开热点,怎么在电脑上开热点?电脑开热点的两种方法介绍
- 第7章第37节:七图排版:一张背景六张拼合布局 [PowerPoint精美幻灯片实战教程]
- Java工场模式+反射写出通用代码
- php web访问数据库,百宝箱之介绍PHP Web查询数据库基本步骤
- svg html5 编辑工具,HTML5之SVG
- 详解Docker的基本原理与实践操作
- PostQuitMessage
- P问题、NP问题、NPC问题、NP难问题的概念[zz]
- 中国工程院新增选54名院士