gcc
gcc生成静态库
(1)编辑生成例子程序 hello.h、hello.c 和 main.c。 先创建一个作业目录,保存本次文件。 #mkdir test1 #cd test1然后用 vim文本编辑器编辑生成所需要的 3 个文件
hello.h

hello.c

main.c

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

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

(4)由.o 文件创建动态库文件。

(2)
nano生成例子程序y1.c、y2.c、y.h、test.c,此处存于文件夹jingmove
分别写入:
y1.c
#include <stdio.h>
void print1(int arg){
printf("Y1 print arg:%d\n",arg);
}```
y2.c
#include <stdio.h>
void print2(char *arg){
printf("Y2 printf arg:%s\n", arg);
}
y.h
#ifndef Y_H
#define Y_H
void print1(int);
void print2(char *);
#endif
test.c
#include <stdlib.h>
#include "Y.h"
int main(){
print1(1);
print2("test");
exit(0);
}
———静态库.a文件的生成和使用—————————————

共享库.so文件的生成和使用
依次输入图示命令:

2.Gcc不是一个人在战斗。请说明gcc编译工具集中各软件的用途,了解EFF文件格式。学习任务如下:
#include <stdio.h>
int main(void)
{
printf("Hello World! \n");
return 0;
}
预处理 预处理的过程主要包括以下过程: (1) 将所有的#define 删除,并且展开所有的宏定义,并且处理所有的条件预编 译指令,比如#if #ifdef #elif #else #endif 等。 (2) 处理#include 预编译指令,将被包含的文件插入到该预编译指令的位置。 (3) 删除所有注释“//”和“/* */”。 (4) 添加行号和文件标识,以便编译时产生调试用的行号及编译错误警告行号。 (5) 保留所有的#pragma 编译器指令,后续编译过程需要使用它们。 使用 gcc 进行预处理的命令如下: $ gcc -E hello.c -o hello.i
编译 编译过程就是对预处理完的文件进行一系列的词法分析,语法分析,语义分析及 优化后生成相应的汇编代码。 使用 gcc 进行编译的命令如下: $ gcc -S hello.i -o hello.s // 将预处理生成的 hello.i 文件编译生成汇编程序 hello.s // GCC 的选项-S 使 GCC 在执行完编译后停止,生成汇编程序 上述命令生成的汇编程序 hello.s 的代码片段如下所示,其全部为汇编代码。 // hello.s 代码片段 main: .LFB0: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 movl $.LC0, %edi call puts movl $0, %eax popq %rbp .cfi_def_cfa 7, 8 ret .cfi_endproc
3.综合实践


1解释:gcc + 文件名 + -o + 输出文件流名称 +` 支持包
gcc编译器:g++ + 文件名 + -o + 输出文件流名称 +` 支持包
其中pkg-config是一个linux下的命令,用于获得某一个库/模块的所有编译相关的信息(包括头文件和库的所有信息)
—cflags 是用来指定程序在编译时所需要头文件所在的目录
—libs则是指定程序在链接时所需要的动态链接库的目录
2.
(1)VideoCapture capture
(2)while 循环体中的 Mat 数据结构是个点阵,它对应图像上的每一个点,每个图像都是由无数的点构成的,可以说Mat是一个图像矩阵。
其功能是不断刷新图像,如果没有就会看不到画面的变化。
(3)增加一个判断语句
浙公网安备 33010602011771号