资讯专栏INFORMATION COLUMN

GCC与opencv的故事

mtunique / 3324人阅读

摘要:静态库结果动态库注意需要将移动到目录下完成后的文件夹心得体会通过用生成静态库和动态库的练习过程,基本上能够熟练的生成静态库和动态库。

gcc生成静态库.a与动态库.so

静态库

一、创建目录

mkdir homeworkcd homework

在homework文件夹下编写文件

gedit hello.h
#ifndef HELLO_H#define HELLO_Hvoid hello(const char *name);#endif
gedit hello.c
#includevoid hello(const char *name){	printf("Hello %s/n",name);}
gedit main.c
#include"hello.h"int main(){	hello("everyone");	return 0;}

二、用gcc编译得到.o文件

gcc -c hello.c

三、静态库的使用

3.1静态库的创建

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

ar -crv libmyhello.a hello.o

调用静态库

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

gcc main.c libmyhello.a -o hellogcc -o hello main.c libmyhello.a

动态库

一、创建动态库

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

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

生成libmyhello.so文件后需要将其复制到目录/usr/lib中,否则会出现如图所示的错误提示。

生成完后的文件夹

实例

在第一次作业的程序代码基础进行改编,除了x2x函数之外,再扩展写一个x2y函数(功能自定),main函数代码将调用x2x和x2y ;将这3个函数分别写成多带带的3个 .c文件,并用gcc分别编译为3个.o 目标文件;将x2x、x2y目标文件用 ar工具生成1个 .a 静态库文件, 然后用 gcc将 main函数的目标文件与此静态库文件进行链接,生成最终的可执行程序,记录文件的大小。

gedit sub2.cgedit sub.h


静态库

ar crv libsub.a sub1.o sub2.ogcc -o main main.c libsub.a


结果

动态库

gcc -shared -fPIC libsub.so sub1.o sub2.ogcc -o main main.c libsub.so

注意:需要将libsub.so移动到**/usr/lib**目录下


完成后的文件夹

心得体会

通过用gcc生成静态库和动态库的练习过程,基本上能够熟练的生成静态库和动态库。再在练习过程中,遇到很多难以解决的问题,但是通过百度和询问同学,大多数都能解决。具体的过程需要慢慢多练几遍,也能很快能够掌握。可执行文件是通过编译链接获取得到的,利用工具将源码编译得到.o文件,接下来就是将.o文件链接得到可执行文件。

参考文章

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/121984.html

相关文章

  • gcc生成静态库.a和动态库.so和OpenCV3.4.11安装及使用示例

    摘要:静态库在程序编译时会被连接到目标代码中,程序运行是则不需要静态库的存在。三总结本次作业使我了解了生成静态库和动态库的方法,在做的过程中也遇到了困难,通过网上各位大佬的帮助解决了。 ...

    missonce 评论0 收藏0
  • Opencv殊死搏斗故事

    摘要:安装下载数据包国内快速下载地址选择上述框起来的部分。 安装Opencv 下载 OpenCV 3.4.11 数据包 国内快速下载地址:https://www.bzbl...

    kaka 评论0 收藏0
  • 嵌入式系统作业3

    摘要:效果图如下四,使用示例视频虚拟机获取摄像头权限使用快捷键,输入,并回车。找到服务,确保启动了。这次作业新编辑技能,之前用的这次学习了用可以创建新的目录,这样会有序很多。 ...

    ymyang 评论0 收藏0
  • Opencv&windows&qt编译流程及问题解决

    摘要:中主要就是将源码的文件生成到了目录中,注意配置编译工具微然后在中我选择的是位的工具,尝试过位的但是总遇到问题。 1.需要的工具和环境: opencv源码 已经安装...

    Lorry_Lu 评论0 收藏0
  • Day 12: OpenCV —— Java开发者人脸检测

    摘要:今天我准备学习如何用来进行人脸检测。它提供和的接口,并支持所有主流操作系统平台,包括及。这个过程之后,将有面部检测。我们遍历所有的脸部检测并用矩形标记图像。这个程序的输出展示如下,这是在人脸检测之前和之后的图片今天就这些,欢迎反馈。 编者注:我们发现了比较有趣的系列文章《30天学习30种新技术》,准备翻译,一天一篇更新,年终礼包。下面是第十二天的内容。 今天我准备学习如何用Jav...

    zhunjiee 评论0 收藏0

发表评论

0条评论

mtunique

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<