要求:
一. 学习并掌握可执行程序的编译、组装过程。学习任务如下:
1)阅读、理解和学习材料“用gcc生成静态库和动态库.pdf”和“静态库.a与.so库文件的生成与使用.pdf”,请在Linux系统(Ubuntu)下如实仿做一遍。
2)在第一次作业的程序代码基础进行改编,除了x2x函数之外,再扩展写一个x2y函数(功能自定),main函数代码将调用x2x和x2y ;将这3个函数分别写成单独的3个 .c文件,并用gcc分别编译为3个.o 目标文件;将x2x、x2y目标文件用 ar工具生成1个 .a 静态库文件, 然后用 gcc将 main函数的目标文件与此静态库文件进行链接,生成最终的可执行程序,记录文件的大小。
3)将x2x、x2y目标文件用 ar工具生成1个 .so 动态库文件, 然后用 gcc将 main函数的目标文件与此动态库文件进行链接,生成最终的可执行程序,记录文件的大小,并与之前做对比。
一、用gcc生成静态库和动态库
函数库分为静态库和动态库。
- 静态库
在程序编译时会被连接到目标代码中,程序运行是则不需要静态库的存在。 - 动态库
在程序编译时不会被连接到目标代码中,而是程序运行时载入的。
两者区别:前者是编译连接的,后者是程序运行载入的。 -
1.准备过程
(1). 创建一个目录
(2). hello代码
hello.h -
#ifndef HELLO_H #define HELLO_H void hello(const char *name); #endif//HELLO_Hhello.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; }(3). gcc编译得到.o文件
gcc -c hello.c -

二、静态库使用
(1)创建静态库
创建静态库的工具:ar
静态库文件命名规范:以lib作为前缀,是.a文件 -
静态库使用
(1)创建静态库
创建静态库的工具:ar
静态库文件命名规范:以lib作为前缀,是.a文件 -
ar -crv libmyhello.a hello.o
-

生成main.o gcc -c main.c
生成可执行文件 gcc -o hello main.c libmyhello.a -


3.动态库的使用
(1). 创建动态库
创建动态库的工具:gcc
动态库文件命名规范:以lib作为前缀,是.so文件 -
gcc -shared -fPIC -o libmyhello.so hello.o
-
在程序中执行动态库
-
gcc -o hello main.c -L. -lmyhello或gcc main.c libmyhello.so -o hell
-


本文详细介绍了如何在Ubuntu系统下使用gcc生成静态库.a和动态库.so,以及如何在OpenCV环境中进行图片处理、视频播放和录制。通过创建并链接静态库和动态库,展示了它们在程序编译和运行时的区别。同时,文章还涵盖了OpenCV的安装配置及其使用示例,包括图片显示、视频播放和录制。
最低0.47元/天 解锁文章
853

被折叠的 条评论
为什么被折叠?



