摘要:静态库结果动态库注意需要将移动到目录下完成后的文件夹心得体会通过用生成静态库和动态库的练习过程,基本上能够熟练的生成静态库和动态库。
mkdir homeworkcd homework
在homework文件夹下编写文件
gedit hello.h
#ifndef HELLO_H#define HELLO_Hvoid hello(const char *name);#endif
gedit hello.c
#include void hello(const char *name){ printf("Hello %s/n",name);}
gedit main.c
#include"hello.h"int main(){ hello("everyone"); return 0;}
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 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文件链接得到可执行文件。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/121984.html
摘要:静态库在程序编译时会被连接到目标代码中,程序运行是则不需要静态库的存在。三总结本次作业使我了解了生成静态库和动态库的方法,在做的过程中也遇到了困难,通过网上各位大佬的帮助解决了。 ...
摘要:安装下载数据包国内快速下载地址选择上述框起来的部分。 安装Opencv 下载 OpenCV 3.4.11 数据包 国内快速下载地址:https://www.bzbl...
摘要:中主要就是将源码的文件生成到了目录中,注意配置编译工具微然后在中我选择的是位的工具,尝试过位的但是总遇到问题。 1.需要的工具和环境: opencv源码 已经安装...
摘要:今天我准备学习如何用来进行人脸检测。它提供和的接口,并支持所有主流操作系统平台,包括及。这个过程之后,将有面部检测。我们遍历所有的脸部检测并用矩形标记图像。这个程序的输出展示如下,这是在人脸检测之前和之后的图片今天就这些,欢迎反馈。 编者注:我们发现了比较有趣的系列文章《30天学习30种新技术》,准备翻译,一天一篇更新,年终礼包。下面是第十二天的内容。 今天我准备学习如何用Jav...
阅读 456·2021-11-18 13:12
阅读 1389·2021-11-16 11:42
阅读 1041·2021-11-15 11:39
阅读 3325·2021-10-09 09:44
阅读 1288·2021-10-08 10:04
阅读 2322·2021-09-23 11:22
阅读 5781·2021-09-22 15:15
阅读 3434·2021-09-02 09:54