opencv

本文介绍了如何使用GCC创建静态库.a和动态库.so,详细阐述了编译过程和库文件的使用。同时,探讨了ELF文件格式,并展示了在Linux环境下使用OpenCV进行图片和摄像头操作的实例代码。
摘要由CSDN通过智能技术生成

一.学习并掌握可执行程序的编译、组装过程。

1.用 gcc 生成 .a 静态库和 .so 动态库
1.1编辑生成例子程序 hello.h、hello.c 和 main.c

dxc@dxc-virtual-machine:~$ mkdir test1    //创建test1目录
dxc@dxc-virtual-machine:~$ cd test1       //进入test1目录,创建文件将处于该文件夹内
dxc@dxc-virtual-machine:~/test1$ touch hello.h   //依次创建头文件、源程序、主程序
dxc@dxc-virtual-machine:~/test1$ touch hello.c
dxc@dxc-virtual-machine:~/test1$ touch main.c

1.2编译文件

dxc@dxc-virtual-machine:~/test1$ gedit hello.h   //进入头文件编辑界面并输入代码
#ifndef HELLO_H
#define HELLO_H
void hello(const char *name);
#endif //HELLO_H
dxc@dxc-virtual-machine:~/test1$ gedit hello.c   //进入源程序编辑界面并输入代码
#include <stdio.h>
void hello(const char *name)
{
   
printf("Hello %s!\n", name);
}
dxc@dxc-virtual-machine:~/test1$ gedit main.c  //进入主程序编辑界面并输入代码
#include "hello.h"
int main()
{
   
hello("everyone");
return 0;
}

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

dxc@dxc-virtual-machine:~/test1$ gcc -c hello.c  //生成 hello.o 文件
dxc@dxc-virtual-machine:~/test1$ ls  //运行 ls 命令查看是否生存了 hello.o 文件

如图已生成在这里插入图片描述
1.4创建静态库

dxc@dxc-virtual-machine:~/test$ ar -crv libmyhello.a hello.o  //创建静态库文件libmyhello.a
dxc@dxc-virtual-machine:~/test$ ls  //查看结果

如图已将创建完成在这里插入图片描述
1.5在程序中使用静态库
方法一:

dxc@dxc-virtual-machine:~/test1$ gcc -o hello main.c -L. -lmyhello

在这里插入图片描述

方法二:

dxc@dxc-virtual-machine:~/test1$ gcc main.c libmyhello.a -o hello

在这里插入图片描述
方法三:

dxc@dxc-virtual-machine:~/test$ gcc -c main.c  //生成 main.o
dxc@dxc-virtual-machine:~/test$ gcc -o hello main.o libmyhello.a  //生成可执行文件
dxc@dxc-virtual-machine:~/test$ ./hello

在这里插入图片描述

1.6创建动态库文件

dxc@dxc-virtual-machine:~/test1$ gcc -shared -fPIC -o libmyhello.so hello.o  //创建动态库文件 libmyhello.so
dxc@dxc-virtual-machine:~/test1$ ls  //查看动态库文件是否生成
hello  hello.c  hello.h  hello.o  libmyhello.so  main.c  main.o

在这里插入图片描述
1.7使用动态库

dxc@dxc-virtual-machine~/test1$ gcc -o hello main.c -
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值