当前位置: 首页 > news >正文

适合前端做项目的网站中小企业建设网站策略

适合前端做项目的网站,中小企业建设网站策略,国外域名抢注网站,微网站与手机网站的区别库从本质上来说是一种可执行代码的二进制格式#xff0c;可以被载入内存中执行。库分静态库和动态库两种。 静态库和动态库的区别1. 静态函数库这类库的名字一般是libxxx.a#xff1b;利用静态函数库编译成的文件比较大#xff0c;因为整个 函数库的所有数据都会被整合进目标…库从本质上来说是一种可执行代码的二进制格式可以被载入内存中执行。库分静态库和动态库两种。 静态库和动态库的区别1. 静态函数库 这类库的名字一般是libxxx.a利用静态函数库编译成的文件比较大因为整个 函数库的所有数据都会被整合进目标代码中他的优点就显而易见了即编译后的执行程序不需要外部的函数库支持因为所有使用的函数都已经被编译进去了。当然这也会成为他的缺点因为如果静态函数库改变了那么你的程序必须重新编译。2. 动态函数库 这类库的名字一般是libxxx.so;相对于静态函数库动态函数库在编译的时候 并没有被编译进目标代码中你的程序执行到相关函数时才调用该函数库里的相应函数因此动态函数库所产生的可执行文件比较小。由于函数库没有被整合进你的程序而是程序运行时动态的申请并调用所以程序的运行环境中必须提供相应的库。动态函数库的改变并不影响你的程序所以动态函数库的升级比较方便。 linux系统有几个重要的目录存放相应的函数库如/lib /usr/lib。静态库的使用静态库的操作工具gcc和ar 命令。 编写及使用静态库 (1)设计库源码 pr1.c 和 pr2.c [rootbillstone make_lib]# cat pr1.c void print1() { printf(This is the first lib src!n); } [rootbillstone make_lib]# cat pr2.c void print2() { printf(This is the second src lib!n); } (2) 编译.c 文件 [billbillstone make_lib]$ cc -O -c pr1.c pr2.c [billbillstone make_lib]$ ls -l pr*.o -rw-rw-r-- 1 bill bill 804 4 月 15 11:11 pr1.o -rw-rw-r-- 1 bill bill 804 4 月 15 11:11 pr2.o (3) 链接静态库 为了在编译程序中正确找到库文件,静态库必须按照 lib[name].a 的规则命名,如下例中[name]pr. [billbillstone make_lib]$ ar -rsv libpr.a pr1.o pr2.o a - pr1.o a - pr2.o [billbillstone make_lib]$ ls -l *.a -rw-rw-r-- 1 bill bill 1822 4 月 15 11:12 libpr.a [billbillstone make_lib]$ ar -t libpr.a pr1.o pr2.o (4) 调用库函数代码 main.c [billbillstone make_lib]$ cat main.c int main() { print1(); print2(); return 0; } (5) 编译链接选项 -L 及-l 参数放在后面.其中,-L 加载库文件路径,-l 指明库文件名字. [billbillstone make_lib]$ gcc -o main main.c -L./ -lpr [billbillstone make_lib]$ ls -l main* -rwxrwxr-x 1 bill bill 11805 4 月 15 11:17 main -rw-rw-r-- 1 bill bill 50 4 月 15 11:15 main.c (6)执行目标程序 [billbillstone make_lib]$ ./main This is the first lib src! This is the second src lib! [billbillstone make_lib]$ 动态库的使用编写动态库 (1)设计库代码 [billbillstone make_lib]$ cat pr1.c int p 2; void print(){ printf(This is the first dll src!n); } [billbillstone make_lib]$ (2)生成动态库 [billbillstone make_lib]$ gcc -O -fpic -shared -o dl.so pr1.c [billbillstone make_lib]$ ls -l *.so -rwxrwxr-x 1 bill bill 6592 4 月 15 15:19 dl.so [billbillstone make_lib]$ 动态库的隐式调用 在编译调用库函数代码时指明动态库的位置及名字, 看下面实例 [billbillstone make_lib]$ cat main.c int main() { print(); return 0; } [billbillstone make_lib]$ gcc -o tdl main.c ./dl.so [billbillstone make_lib]$ ./tdl This is the first dll src! [billbillstone make_lib]$ 当动态库的位置活名字发生改变时, 程序将无法正常运行; 而动态库取代静态库的好处之一则是通过更新动态库而随时升级库的内容. 动态库的显式调用 显式调用动态库需要四个函数的支持, 函数 dlopen 打开动态库, 函数 dlsym 获取动态库中对象基址, 函数 dlerror 获取显式动态库操作中的错误信息, 函数 doclose 关闭动态库.[billbillstone make_lib]$ cat main.c #include dlfcn.h int main() { void *pHandle; void (*pFunc)(); // 指向函数的指针 int *p; pHandle dlopen(./d1.so, RTLD_NOW); // 打开动态库 if(!pHandle){ printf(Cant find d1.so n); exit(1); } pFunc (void (*)())dlsym(pHandle, print); // 获取库函数 print 的地址 if(pFunc) pFunc(); else printf(Cant find function printn); p (int *)dlsym(pHandle, p); // 获取库变量 p 的地址 if(p) printf(p %dn, *p); else printf(Cant find int pn); dlclose(pHandle); // 关闭动态库 return 0; } [billbillstone make_lib]$ gcc -o tds main.c –ld1 –L.此时还不能立即./tds因为在动态函数库使用时会查找/usr/lib、/lib目录下的动态函数库而此时我们生成的库不在里边。 这个时候有好几种方法可以让他成功运行 最直接最简单的方法就是把libstr_out.so拉到/usr/lib或/lib中去。 还有一种方法 export LD_LIBRARY_PATH$(pwd) 另外还可以在/etc/ld.so.conf文件里加入我们生成的库的目录然后/sbin/ldconfig。 /etc/ld.so.conf是非常重要的一个目录里面存放的是链接器和加载器搜索共享库时要检查的目录默认是从/usr/lib /lib中读取的所以想要顺利运行我们也可以把我们库的目录加入到这个文件中并执行/sbin/ldconfig 。另外还有个文件需要了解/etc/ld.so.cache,里面保存了常用的动态函数库且会先把他们加载到内存中因为内存的访问速度远远大于硬盘的访问速度这样可以提高软件加载动态函数库的速度了。库依赖的查看使用ldd命令来查看执行文件依赖于哪些库。该命令用于判断某个可执行的 binary 档案含有什么动态函式库。[roottest root]# ldd [-vdr] [filename]参数说明--version  打印ldd的版本号-v --verbose  打印所有信息例如包括符号的版本信息-d --data-relocs  执行符号重部署并报告缺少的目标对象只对ELF格式适用-r --function-relocs  对目标对象和函数执行重新部署并报告缺少的目标对象和函数只对ELF格式适用--help 用法信息。如果命令行中给定的库名字包含/这个程序的libc5版本将使用它作为库名字否则它将在标准位置搜索库。运行一个当前目录下的共享库加前缀./。Linux-C语言学习交流群【721709245】在学的进群一起交流资料自己群文件下载相关资料Linux库的实现与应用静态库动态库
http://www.sadfv.cn/news/20086/

相关文章:

  • 广告东莞网站建设技术支持内蒙古呼和浩特市邮编
  • 车辆保险网站vi设计一套多少钱
  • 做网站卖广告什么网站可以找人做设计师
  • 做网站三年3万块钱网站推广新手入门教程
  • 做旅游网站的意义seo推广效果怎么样
  • 网站底部模板wordpress怎么换log
  • 农产品网站建设投标书个人工作室网站源码带后台
  • 萍乡做网站的公司有哪些门户类网站有哪些
  • 企业营销型网站建设如何在网上推广项目
  • 制作网站团队用dw可以做网站吗
  • 张家港早晨网站建设手机网站导航菜单源码
  • html做网站的毕业设计南通丰汇建设有限公司公司网站
  • 建一个私人彩票网站html5自适应手机网站模板
  • 珠海网站建设推广服务php网站开发范例
  • 宝安网站设计公司专门做代工产品的网站
  • 网页设计师网站为什么做红酒网站
  • html网站开发相关书籍阳江吧
  • 网站建设 启象科技网页制作超链接怎么做
  • 视频网站开发报告app大全软件网站免费下载
  • 网站建设类企业网站模板
  • 网站项目名称淮南最近发生的新闻
  • 好的html5网站模板网站建设与推广方案模板
  • 番禺区网站建设哪里有单页营销型网站模板
  • 水泵行业网站哪个做的好站点-将网站添加到区域变灰色无法添加如何解决
  • 做网站在哪儿买空间深圳推广优化公司
  • 外贸自建站平台哪个好无忧中英繁企业网站系统 完整
  • wordpress 分类调用高清网站seo
  • 郑州公司建网站有没有做丝网的网站呀
  • 在什么网站做公司人员增减常见网站图标
  • 微信触屏版网站开发能去百度上班意味着什么