php网站开发答案,网站模板制作与安装教程视频教程,营销型网站建设的目的,中华智能自建代理网站库#xff1a;
库是一种可执行代码的二进制形式#xff0c;可以被操作系统载入内存执行。就是将源代码转化为二进制格式的源代码#xff0c;相当于进行了加密#xff0c;别人可以使用库#xff0c;但是看不到库中的内容。
如何使用 用户需要同时具有头文件和库。
头文件…库
库是一种可执行代码的二进制形式可以被操作系统载入内存执行。就是将源代码转化为二进制格式的源代码相当于进行了加密别人可以使用库但是看不到库中的内容。
如何使用 用户需要同时具有头文件和库。
头文件相当于说明书的作用能够知道这个库能干嘛
制作出来的库具体的实现存放.c、.cpp
静态库 是在程序执行前编译就加入到目标程序中去了。 优点 1、静态库被打包到应用程序中运行速度快 2、发布程序无需提供静态库因为已在app中移植方便 缺点 1、链接时完整的拷贝至可执行文件中被多次使用就有多份冗余的拷贝。 2、更新、部署、发布、比较麻烦。 动态库 是在执行程序时动态临时由目标程序去调用 优点 1、链接时不复制程序运行时由系统动态加载到内存供程序使用系统只加载一次多个程序可以共用节省内存。 2、程序升级简单因为app里面没有源代码升级之后只要库的名字不变函数名以及参数不变只是实现了优化就能加载成功。 缺点 1、加载速度比静态库慢 2、发布程序需要提供依赖的动态库
静态库的制作和使用 (1)命名规则 静态库文件名的命名方式是“libxxx.a”,库名前加”lib”后缀用”.a”“xxx”为静态库名。 (2)制作步骤 原材料源代码.c 或者 .cpp
1、将.c文件生成.ogcc a.c b.c -c
piraspberrypi:~/test$ ls
togetherfunc1.c togetherfunc1.h togetherfunc.c
piraspberrypi:~/test$ gcc togetherfunc1.c -c
piraspberrypi:~/test$ ls
togetherfunc1.c togetherfunc1.h togetherfunc1.o togetherfunc.c2、将.o 打包 ar rcs 静态库的名字 原材料 ar rcs libtest.a a.o b.o
piraspberrypi:~/test$ ar
//输入指令ar查看各个参数的功能
ps以下是一些指令的介绍mv togetherfunc1.c ~//~表示工作目录 将这个.c文件移到工作目录cp ~/togetherfunc1.c .//从工作目录再移到当前文件 mv togetherfunc1.* ~
//将当前文件夹下的以togetherfunc1开头的文件移动到工作目录下。 * 是通配符 代码演示
piraspberrypi:~/test$ ls
togetherfunc1.c togetherfunc1.h togetherfunc1.o togetherfunc.c
piraspberrypi:~/test$ ar rcs libfunc1.a togetherfunc1.o
piraspberrypi:~/test$ ls
libfunc1.a togetherfunc1.c togetherfunc1.h togetherfunc1.o togetherfunc.c(3)库的使用
若直接-l 编译会报错因为-l 会优先从/urs/lib 或 /urs/local/lib 中去找但我们想让它优先从当前路径去找就要用到-L。
piraspberrypi:~/test$ gcc togetherfunc.c -lfunc1
/usr/bin/ld: cannot find -lfunc1
collect2: error: ld returned 1 exit status应该这样使用
gcc togetherfunc.c -lfunc1 -L ./ -o mainProstatic
//-l 是指定要用的动态库名称库名砍头去尾去掉lib和.a
//-L 告诉gcc编译器从-L指定的路径去找静态库。默认先是从/urs/lib 或 /urs/local/lib 中去找若-L后先从指定的路径去找找不到再从/urs/lib 或 /urs/local/lib 中去找。
// ./表示当前路径
// -o后是编译后程序的名字动态库的生成和使用 (1)命名规则 动态库的命名方式与静态库类似前缀相同为“lib”后缀变为“.so”。所以为“libmytime.so” (2)制作步骤
输入指令
gcc -shared a.o b.o -o libxxx.so代码演示
piraspberrypi:~/test $ ls
libfunc1.a togetherfunc1.c togetherfunc1.h
piraspberrypi:~/test $ gcc -shared -fpic togetherfunc1.c -o libfun1.so
piraspberrypi:~/test $ ls
libfun1.so libfunc1.a togetherfunc1.c togetherfunc1.h
//-shared 的意思是指定生成动态库
// -fpic 标准fpic选项作用于编译阶段在生成目标文件时就得使用该选项以生成位置无关的代码。(3)动态库的使用
动态库优先从当前路径去找没找到的话再去/usr/lib/下去找
sudo cp libfun2.so /usr/lib/
//将生成的动态库拷贝到/usr/lib
sudo rm /usr/lib/libfun2.so
//从/usr/lib/中移除刚才移入的动态库gcc togetherfunc.c -l fun2 -L ./ -o mianPrody//这是编译的时候//运行的时候可能此时会提示No such file or directory需要进行环境变量的设置动态库无法加载引用动态库怎么指定动态库的位置
临时设置 在终端进行 export LD_LIBRARY_PATH“动态库的路径”
利用脚本
vi start.sh
//创建一个.sh文件
export LD_LIBRARY_PATH/home/pi/test//动态库的路径
./mianPrody//所要执行的程序名称
//在文件夹中输入以上内容
chmod x start.sh
//给脚本加可执行的的权限
./start.sh
//执行该脚本计算文件大小
piraspberrypi:~/test $ du libfunc1.a
4 libfunc1.a
piraspberrypi:~/test $ du mianPrody
12 mianPrody