GCC背后的故事&OpenCV相逢何必曾相识

本文详细介绍了如何使用GCC生成静态库和动态库,包括hello实例的六个步骤,以及静态库.a与动态库.so的生成与使用。此外,文章还探讨了OpenCV3.4.11的安装和图片、视频处理的实例。在GCC编译器背后的故事部分,解析了预处理、编译、汇编和链接过程,并分析了ELF文件的段和反汇编。通过实验,作者深入理解了静态库和动态库的区别以及OpenCV的初步应用。
摘要由CSDN通过智能技术生成

目录

一、用gcc生成静态库和动态库

1、hello实例

(1)第一步:编辑生成例子程序hello.h、hello.c和mian.c.

(2)第二步:用gcc将hello.c编译成.o文件。

(3)第三步:由.o文件创建静态库

(4)第四步:在程序中使用静态库

(5)第五步:由.o文件创建动态库文件

(6)第六步:在程序中使用动态库

 二、静态库.a与.so库文件的生成与使用

(1)代码:

​ (2)静态库.a文件的生成和使用

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

三、实例

第一步:

第二步:静态库

第三步:动态库

 第四步:静态库与动态库的生成文件的比较

四、OpenCV3.4.11的安装及使用实例

(1)OpenCV3.4.11的安装

(2)使用示例——图片

 (3)使用示例——视频

1、虚拟机获取摄像头权限

2、播放视频:

3、录制视频

 五、GCC编译器背后的故事

(1)准备工作

 (2)编译过程

1、预处理

2、编译

​ 3、汇编

4、链接

(3)分析ELF文件

1、ELF文件的段

2.反汇编ELF

六、总结

 七、参考链接


一、用gcc生成静态库和动态库

1、hello实例

(1)第一步:编辑生成例子程序hello.h、hello.c和mian.c.

程序一:hello.h

程序二:hello.c

程序三:main.c

(2)第二步:用gcc将hello.c编译成.o文件。

运行ls命令查看是否生成.o文件。

在ls命令中存在hello.o文件。

(3)第三步:由.o文件创建静态库

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

用ls命令可以查看到上述图片中的结果,可知创建成功。

(4)第四步:在程序中使用静态库

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

注意:对于自定义的静态库,main.c还可以放在-L.和-lmyhello之间,否则myhello没有定义。
-L.:表示连接的库在当前目录

②gcc main.c libmyhello.a -o hello

 ③先生成main.o gcc -c main.c
生成可执行文件 gcc -o hello main.c libmyhello.a

验证静态库的特点
在删掉静态库的情况下,运行可执行文件,发现程序仍旧正常运行,表明静态库跟程序执行没有联系。同时,也表明静态库是在程序编译的时候被连接到代码中的。

(5)第五步:由.o文件创建动态库文件

创建动态库的工具:gcc
动态库文件命名规范:以lib作为前缀,是.so文件

gcc -shared -fPIC -o libmyhello.so hello.o
shared:表示指定生成动态链接库,不可省略
-fPIC:表示编译为位置独立的代码,不可省略

动态文件生成。

(6)第六步:在程序中使用动态库

gcc -o hello main.c -L. -lmyhello或gcc main.c libmyhello.so -o hello
再运行可执行文件hello,会出现错误。如图

解决方法:将libmyhello.so复制到目录/usr/lib中。

 二、静态库.a与.so库文件的生成与使用

(1)代码:

A1.c程序:

A2.c程序:

A.h程序

test程序

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

 解决方式:将test.c中的exit(0)修改为return 0

 

  

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

三、实例

第一步:

程序sub1.c

程序sub2.c

程序sub.h

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值