GCC示例以及OpenCV的使用

本文介绍了如何在Linux环境下使用GCC生成动态库和静态库,详细阐述了静态库和动态库的区别。接着,文章详细讲解了OpenCV的安装过程,并给出了使用OpenCV进行图像处理和视频操作的实例,帮助读者理解和应用OpenCV。
摘要由CSDN通过智能技术生成

目录

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

    (一)前言

 (二)静态库的使用

 (三)动态库的使用

(四)动态库和静态库使用实例

二、OpenCV的安装以及使用实例

(一)OpenCV简介

(二)OpenCV下载

(三)OpenCV使用实例

三、总结

四、参考网站


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

    (一)前言

  动态链接库(Dynamic Link Library 或者 Dynamic-link Library,缩写为 DLL),是微软公司在微软Windows操作系统中,实现共享函数库概念的一种方式。这些库函数的扩展名是 ”.dll"、".ocx"(包含ActiveX控制的库)或者 ".drv"(旧式的系统驱动程序)。

  Windows 中,DLL 多数情况下是带有 ".dll" 扩展名的文件,但也可能是 ".ocx"或其他扩展名;Linux系统中常常是 ".so" 的文件。它们向运行于 Windows操作系统下的程序提供代码、数据或函数。程序可根据 DLL 文件中的指令打开、启用、查询、禁用和关闭驱动程序

  静态库是指在我们的应用中,有一些公共代码是需要反复使用,就把这些代码编译为“库”文件;在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中的这种库。

  静态库和动态库是两种共享程序代码的方式,它们的区别是:静态库在程序的链接阶段被复制到了程序中,和程序运行的时候没有关系;动态库在链接阶段没有被复制到程序中,而是程序在运行时由系统动态加载到内存中供程序调用。使用动态库的优点是系统只需载入一次动态库,不同的程序可以得到内存中相同的动态库的副本,因此节省了很多内存。

 (二)静态库的使用

    首先在Linux虚拟机上创建一个文件夹用于存放本次的实验内容

编写代码:

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

 创建好的效果如下

 gcc编译得到.o文件
gcc -c hello.c

   使用静态库

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

ar -crv libmyhello.a hello.o

在程序中使用静态库
gcc -o hello main.c -L. -lmyhello 

gcc main.c libmyhello.a -o hello

 

先生成main.o文件

gcc -c main.c  

然后再生成可执行文件

gcc -o hello main.c libmyhello.a 

效果如下

 (三)动态库的使用

  首先创建动态库

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

在程序中执行动态库
gcc -o hello main.c -L. -lmyhello或gcc main.c libmyhello.so -o hello 

 在运行hello程序时,会出现如下错误

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

mv libmyhello.so /usr/lib

在复制时可能会出现权限不够问题

输入 sudo -s 输入密码获得root权限

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值