gcc编译器的使用操作及opencv图像编程

本文详细介绍了如何使用GCC编译器生成静态库和动态库,并通过实例演示了静态库和动态库的创建及使用。接着,文章讲解了在Linux环境下安装OpenCV的步骤,包括依赖库的安装、配置编译环境等。最后,文章展示了如何使用OpenCV进行图像编程,包括打开摄像头处理视频的操作。
摘要由CSDN通过智能技术生成

目录

一、gcc 生成 .a 静态库和 .so 动态库

1.创建作业目录

2.用vim编写hello.h、hello.c和main.c文件

3.将 hello.c 编译成.o 文件

4.由.o文件创建静态库

5.程序中使用静态库

6.由.o 文件创建动态库文件

7.在程序中使用动态库

8.当静态库和动态库同名时,gcc 命令会使用哪个库文件

二、作业一程序基础gcc改编生成静态库和动态库并比较大小

1.用vim编写x2x.c、x2y.c、main.c、main.h。

2.将x2x.c和x2y.c和main.c编译成.o文件

3.将x2x、x2y目标文件用 ar工具生成1个 .a 静态库文件

4.用 gcc将 main函数的目标文件与此静态库文件进行链接,生成最终的可执行程序,并记录大小

5.将x2x、x2y目标文件生成1个 .so 动态库文件

6.用 gcc将 main函数的目标文件与此动态库文件进行链接,生成最终的可执行程序,记录大小并与静态库比较

三、安装opencv

二、使用opencv进行图像编程

三、 打开摄像头显示处理视频


一、gcc 生成 .a 静态库和 .so 动态库





1.创建作业目录

(1)创建test1目录

(2)进入test1目录

2.用vim编写hello.h、hello.c和main.c文件

程序1 hello.h

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

程序2 hello.c

#include <stdio.h>
void hello(const char *name)
{
 printf("Hello %s!\n", name);
}

程序3 main.c

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

3.将 hello.c 编译成.o 文件

用ls命令查看是否生成

在这里插入图片描述

4.由.o文件创建静态库

用ls命令查看是否生成

在这里插入图片描述

5.程序中使用静态库

下面先生成目标程序 hello,然后运行 hello 程序看看结果如何。

在这里插入图片描述

运行hello文件

在这里插入图片描述

删除静态库文件试试公用函数 hello 是否真的连接到目标文件 hello 中了

在这里插入图片描述

程序照常运行,静态库中的公用函数已经连接到目标文件中了

6.由.o 文件创建动态库文件

动态库文件名命名规范和静态库文件名命名规范类似,也是在动态库名增加前缀 lib,但其文件扩展名为.so

在这里插入图片描述

7.在程序中使用动态库

在程序中使用动态库和使用静态库完全一样,也是在使用到这些公用函数的源程序中包含 这些公用函数的原型声明,然后在用 gcc 命令生成目标文件时指明动态库名进行编译。我 们先运行 gcc 命令生成目标文件,再运行它看看结果。

在这里插入图片描述

(或 #gcc main.c libmyhello.so -o hello 不会出错(没有 libmyhello.so 的话,会出错),但是 接下来./hello 会提示出错,因为虽然连接时用的是当前目录的动态库,但是运行时,是到 /usr/lib 中找库文件的,将文件 libmyhello.so 复制到目录/usr/lib 中就 OK 了)
在这里插入图片描述

将文件 libmyhello.so 复制到目录/usr/lib 中,再运行

在这里插入图片描述

8.当静态库和动态库同名时,gcc 命令会使用哪个库文件

先删除除.c 和.h 外的所有文件,恢复成我们刚刚编辑完举例程序状态

在这里插入图片描述

再来创建静态库文件 libmyhello.a 和动态库文件 libmyhello.so。

在这里插入图片描述

二、作业一程序基础gcc改编生成静态库和动态库并比较大小





1.用vim编写x2x.c、x2y.c、main.c、main.h。

main.h

#ifndef MAIN
#define MAIN
#include<stdio.h>
float x2x(int x,int y);
float x2y(int x,int y);
#endif

 main.c

#include"main.h"
int main()
{
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值