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

企业网站建设方案平台seo这个行业怎么样

企业网站建设方案平台,seo这个行业怎么样,江苏徐州工程交易网,杭州网站建设专注乐云seoLinux 前言对比创建静态库动态库 前言 程序库#xff0c;对于程序原来说是非常重要的。但不少人对其不太了解#xff0c;接下来一起学习其中的奥秘吧#xff01; 简单来说#xff0c;程序库可以分为静态库和共享库。它们包含了数据和执行代码的文件。其不能单独执行#… Linux 前言对比创建静态库动态库 前言 程序库对于程序原来说是非常重要的。但不少人对其不太了解接下来一起学习其中的奥秘吧 简单来说程序库可以分为静态库和共享库。它们包含了数据和执行代码的文件。其不能单独执行可以作为其他执行程序的一部分来完成某些功能。库的存在可以使得程序模块化可以加快程序的再编译可以实现代码的重用可以使得程序便于升级 对比 静态库是指在程序运行前就已经加入到执行代码中成为执行程序的一部分。程序会把静态库加载到自己的内存当中比如在Linux环境下编译产生多个a.out那么相当于每个a.out里面都会存有静态库的内存从而大大削减了程序的运行时间但是增加了空间大小另外静态库更新比较麻烦一般不做推荐 所以静态库适用于对空间要求比较低对时间要求比较高的核心程序中 而相比共享库动态库是在执行程序启动时加载到执行程序中。它是这几个a.out用到库的时候一起去调用库文件被多个执行程序共享使用。因此时间上效率就会下降虽然节省了空间但是耗费了时间。另外动态库是独立的便于维护更新 所以动态库一般用在对时间要求低的对空间要求高的设备上。 创建静态库 首先创建几个.cpp文件 创建两个cpp文件 [bsklocalhost linux_system]$ touch sum.cpp [bsklocalhost linux_system]$ ls sum.cpp [bsklocalhost linux_system]$ vi sum.cpp [bsklocalhost linux_system]$ ls sum.cpp bsklocalhost linux_system]$ touch div1.cpp [bsklocalhost linux_system]$ cd d bash: cd: d: No such file or directory [bsklocalhost linux_system]$ vi div1.cpp 两个文件内容如下 2 int sum(int a, int b) 3 {4 return ab;5 } 2 int div1(int a, int b) 3 {4 return a/b;5 } 然后将.cpp文件生成 .o文件 [bsklocalhost linux_system]$ g -c sum.cpp -o sum.o [bsklocalhost linux_system]$ ls div1.cpp sum.cpp sum.o [bsklocalhost linux_system]$ g -c div1.cpp -o div.o 再使用ar工具制作静态库 [bsklocalhost linux_system]$ ar rcs libmymath.a sum.o div.o [bsklocalhost linux_system]$ ls div1.cpp div.o libmymath.a sum.cpp sum.o 再编写主函数test.cpp 1 #includeiostream2 using namespace std;3 int div1(int a,int b);4 int sum(int a, int b); 5 int main()6 {7 int a 10;8 int b 2;9 coutab sum(a,b)endl;10 couta/b div1(a,b)endl;11 return 0;12 } 编译静态库到可执行文件中 [bsklocalhost linux_system]$ g libmymath.a test.cpp -o a.out 即可运行a.out [bsklocalhost linux_system]$ ls a.out div1.cpp div.o libmymath.a sum.cpp sum.o test.cpp [bsklocalhost linux_system]$ ./a.out ab 12 a/b 5 其实上面这种方法有一点漏洞就是头文件没有单独写出来 #ifndef _MYMATH_H_ 2 #define _MAMATH_H_3 int div1(int a,int b);4 int sum(int a, int b);5 6 #endif ~ 把头文件单独写出来再在test.cpp中引用头文件即可。 可以再创建 lib 和inc 两个目录然后把他们分别放进去 [bsklocalhost linux_system]$ mkdir inc [bsklocalhost linux_system]$ mkdir lib [bsklocalhost linux_system]$ mv *.h inc/ [bsklocalhost linux_system]$ mv *.a lib 即可运行 [bsklocalhost linux_system]$ g test.cpp ./lib/libmymath.a -o a.outy -I ./inc/ [bsklocalhost linux_system]$ ls a.out a.outy div1.cpp div.o inc lib sum.cpp sum.o test.cpp -Wall [bsklocalhost linux_system]$ ./a.outy ab 12 a/b 5 动态库 将.cpp文件生成 .o文件要生成与位置无关的代码 -fPIC [bsklocalhost sourse]$ g -c sum.cpp -o sum.o -fPIC [bsklocalhost sourse]$ g -c div1.cpp -o div1.o -fPIC [bsklocalhost sourse]$ ls div1.cpp div1.o sum.cpp sum.o [bsklocalhost sourse]$ 使用g -shared 制作动态库 g -shared -o lib库名.so sum.o div1.o [bsklocalhost sourse]$ g -shared -o libmymath.so sum.o div1.o [bsklocalhost sourse]$ ls div1.cpp div1.o libmymath.so sum.cpp sum.o [bsklocalhost sourse]$ 编译可执行文件时指定所使用的动态库 -l 指定库名 -L 指定库路径 [bsklocalhost dynamiclib]$ g test.cpp -o a.out -l mymath -L ./lib -I./inc [bsklocalhost dynamiclib]$ ls a.out inc lib sourse test.cpp [bsklocalhost dynamiclib]$ ./a.out ./a.out: error while loading shared libraries: libmymath.so: cannot open shared object file: No such file or directory [bsklocalhost dynamiclib]$ 如上所示竟然出错了为什么呢 首先先来了解一下链接器和动态链接器 链接器 工作于链接阶段工作时需要 -l 和 -L 动态链接器工作于程序运行阶段工作时需要提供动态库所在目录位置。 所以这个错误就是动态链接库因为找不到库文件从而报错。 那我们应该如何去解决呢 方法一通过环境变量临时生效 方法也很简单就是修改一下环境变量· 即LD_LIBRARY_PATH 动态库路径。 [bsklocalhost dynamiclib]$ export LD_LIBRARY_PATH./lib [bsklocalhost dynamiclib]$ ./a.out ab 12 a/b 5 export的意思是让环境变量设定的值生效。 但是当我们关闭终端后再重新打开一个终端新进程再运行的话就会又报错因为·我们设置的环境变量只能在当前进程中生效所以要想它永久生效的话就要修改配置文件了。 方法二永久生效写入终端配置文件建议使用绝对路径 [bsklocalhost ~]$ vi ~/.bashrc //修改配置文件 //进入后写入 export LD_LIBRARY_PATH./lib [bsklocalhost ~]$ . .bashrc //重新·运行一下 即可永久生效 [bsklocalhost dynamiclib]$ ./a.out ab 12 a/b 5 但是还有一点缺点就是当我们的/lib是相对命令如果我们的文件相对于这个lib的路径发生改变了所以就会又报错。所以一般我们就要使用绝对路径。 摒弃以上做法 方法三拷贝法不推荐 我们还可以把libmymath.os文件自定义动态库拷贝到系统根目录lib下标准c库所在目录位置 即可生效 但是此种方法也有一个缺点就是它修改的系统级的目录在系统中添加了自己的文件不可靠所以也不推荐使用 方法四配置文件法 其实我们还可以通过修改配置文件法 首先 sudo vi /etc/ld.so.conf 然后写入 动态库的绝对路径保存退出。 再重新运行使配置文件生效 sudo ldconfig -v 此后再./a.out就可以永久成功啦 libmymath.so [bsklocalhost lib]$ pwd /home/bsk/test1/linux_system/dynamiclib/lib [bsklocalhost lib]$ vi /etc/ld.so.conf[bsklocalhost lib]$ sudo vi /etc/ld.so.conf [sudo] password for bsk: [bsklocalhost lib]$ sudo ldconfig -v .......[bsklocalhost dynamiclib]$ ./a.out ab 12 a/b 5
http://www.hkea.cn/news/14465669/

相关文章:

  • 网站文件夹名称广州自建网站哪家服务好
  • 北京企业建站定制抖音关键词排名系统
  • 城关网站seo五屏网站建设哪家有
  • 用ps怎么做网站步骤wordpress音乐模板下载
  • 企业电商网站优化注册城乡规划师合格标准
  • 北京网站设计价格seo引流什么意思
  • 做网站建设的合同网站建设培训班价格
  • 北京考试学院网站首页wordpress表格主题
  • 网站流量排名查询湖北襄阳网站建设
  • 河南网站设计黑龙江省住房和城乡建设网站
  • 建设二手商品网站总结建设银行官网首页 网站
  • 旅游网站设计与实现论文wordpress cms 插件
  • 企业购网站建设做个简单的公司网站要多少钱
  • 微信微博网站建设意见书怎么选择移动网站建设
  • 深圳网站设计廊坊公司购物系统数据库设计
  • 设计素材网站合集产品开发流程是经营流程
  • 哈尔滨网站制作前景转转钓鱼链接怎么制作
  • 云南省建设工程网站自助建站系统源码
  • 找人做网站!!! 网站定制开发公司建设网站时的注意事项
  • 网站开发项目个人总结网站建设公司何去何从
  • 西安网站seowordpress远程访问
  • 大学科技园东区 做网站特定ip段访问网站代码
  • 做游戏模型素材 网站做网站存在的问题
  • 新手自己建设一个网站erp系统有哪些
  • 网站侧栏软件排行榜怎么做的哈尔滨网站开发建设公司电话
  • 江西网站开发公司电话网站建设实训个人总结1000字
  • 泰州模板建站源码网络营销推广系统排名推荐系统
  • 做期货在哪个网站看消息盐城网站优化推广服务
  • 麦片网站建设wordpress页面如何设置新窗口
  • 自己做儿童衣服教程的网站wordpress 摘要 支持html