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

网站编辑面试问题和答案网站建设科目

网站编辑面试问题和答案,网站建设科目,电脑 手机 微信网站开发,如何购物网站建设静态库/动态库概要 在Windows下静态库的后缀为#xff1a;.lib、动态库后缀为#xff1a;.dll#xff1b;而在Linux下静态库的后缀为#xff1a;.a、动态库的后缀为#xff1a;.so。 那么什么是静态库呢#xff1f; 首先我们来看看程序编译的大体流程#xff1a;预处理…静态库/动态库概要 在Windows下静态库的后缀为.lib、动态库后缀为.dll而在Linux下静态库的后缀为.a、动态库的后缀为.so。 那么什么是静态库呢 首先我们来看看程序编译的大体流程预处理——编译——汇编——链接 在我们的项目开发中有些代码会被反复使用那么这时我们便可将这些代码编译成库的形式来调用像静态库就是在可执行文件中包含库代码的一份完整拷贝但这种方式有个很严重的缺点就是会造成多份冗余拷贝。静态库会在程序的链接阶段被复制到程序中所以程序在运行后是不会调用静态库的。 那动态库又是什么呢 动态库不像静态库那样在链接阶段并没有被复制到程序中反而是程序运行的时候由系统动态的加载到内存中供程序调用所以这里解决了静态库早晨多份冗余拷贝的缺点系统只需要载入一次动态库不同的程序可以得到内存中相同的动态库副本因此可以节省大量的内存。 生成静态库/动态库 下面进入主题看看在linux中如何生成静态库跟动态库 首先我们先创建三个文件分别为hello.cc、hello.h、main.cc如下图 “hello.h #ifndef __HELLO_H__ #define __HELLO_H__   #include stdio.h   void Hello();   #endif hello.cc #include hello.h   void Hello() { printf(Hello World!!!\n); } main.cc #include hello.h   int main(void) { Hello();   return 0; } 这时我们hello world代码算是写完了。接下来我们生成静态库 g -o main main.cc -static -lhello -L.我们先简单介绍下gcc跟g:gcc 最开始的时候是 GNU C Compiler, 如你所知就是一个c编译器。但是后来因为这个项目里边集成了更多其他不同语言的编译器GCC就代表 the GNU Compiler Collection所以表示一堆编译器的合集。 g则是GCC的c编译器。 此处我们使用g如果使用c语言可以将g改为gcc 1、将hello.cc编译成hello.o静态库和动态库都是由.o文件生成 g -c hello.cc 2、为了遵循linux中静态库的命名规范静态库命名为libhello.a ar cr libhello.a hello.o 3、将main.cc与静态库连接生成可执行文件“main” g -o main main.cc -static -lhello -L. 最后文件如下如 4、运行可执行文件 ./main 下面进行动态库的生成 1、生成动态库libhello.so g -c -fPIC hello.cc -o hello.o g -shared hello.o -o libhello.so 当然这里我们可以直接通过cmake来生成动态库下面我们用cmake的方式生成动态库并链接动态库。 首先我们改造下目录结构 我们删除上一步生成的静态库跟动态库只保留源代码在开始的code目录下创建两个文件夹分别是build、lib在code跟lib目录下分别创建一个CMakeLists.txt文件用于编写cmake代码并在code同级目录下创建code2目录在该目录下创建build、src目录将之前的main.cc移到src下在code2目录跟src目录下创建CMakeLists.txt文件先来看看code目录下的CMakeLists.txt文件代码如下 PROJECT(HELLOLIB) ADD_SUBDIRECTORY(lib) lib目录下的CMakeLists.txt文件代码如下 SET(LIBHELLO_SRC hello.cc) ADD_LIBRARY(hello SHARED ${LIBHELLO_SRC}) INSTALL(TARGETS hello hello LIBRARY DESTINATION lib) INSTALL(FILES hello.h DESTINATION include/hello) 对上面代码解析下ADD_LIBRARY用于生成库文件hello是动态库名libxxx.x中xxx的名字,SHARED表示生成的库为动态库。之后的INSTALL是安装共享库和头文件安装到系统库中/usr/lib跟usr/include/hello目录下这里的hello文件夹是我自己创建的。 最后在build目录下运行终端在执行INSTALL时需要用到root权限所以在执行make前先切换到root模式下输入命令行如下 cmake -DCMAKE_INSTALL_PREFIX/usr .. make make install 可以到指定目录中查看库跟头文件已经成功安装到了指定目录下。 下面我们在main.cc中调用我们生成的动态库。 首先我们先将main.cc中引入的头文件#include hello.h改为#include hello.h; 我们先看看code2目录下的CMakeLists.txt下的脚本 PROJECT(NEWHELLO) ADD_SUBDIRECTORY(src) src目录下的CMakeLists.txt脚本如下 ADD_EXECUTABLE(main main.cc) INCLUDE_DIRECTORIES(/usr/include/hello) TARGET_LINK_LIBRARIES(main libhello.so) 跟上面一样我们在终端下来到build目录并输入命令行如下 cmake .. make 得到的输出为Hello World!!! 到这里我们链接库的实例就说完了。cmake是个好东西你值得拥有
http://wiki.neutronadmin.com/news/201248/

相关文章:

  • 做网站的步骤视频游戏在线玩免费免登录
  • 如何用电脑主机做网站广州市官网网站建设多少钱
  • 佛山营销网站建设咨询网业进不去什么原因
  • seo网站优化推广怎么做如何修改wordpress的字体
  • 电子商务网站功能设计与分析网站运营工作是干什么的
  • 你建立的网站使用了那些营销方法鲁中网站
  • 网站怎么优化呢网络营销岗位技能
  • 横岗做网站公司大庆市最新公告
  • 舟山网站建设企业昆山市住房和城乡建设局网站
  • 内蒙古网站建设信息做二手车网站需要什么
  • 无锡网站建设维护邯郸广告公司网站建设
  • 做网站的流程视频线上营销模式有哪些
  • 微信的官方网站怎么做wordpress登录界面插件
  • 昆山门户网站九江集团网站建设公司
  • 专业做ppt的网站做网站送白酒
  • 天津网站建设费用磁力链最佳的搜索引擎
  • 怀化招标网站WordPress文章百度收录插件
  • 网站推送怎么做的网站建设手机站
  • 源码网站下载wordpress标签统一
  • 金华浦江网站建设下述不属于网页制作工具
  • 简单描述一下网站制作的流程网站建设栏目分级
  • 房屋中介做网站的温州网站搭建
  • 建行手机网站网址是多少钱wordpress主题演示站
  • 青海网站建设与制作网站建设实训记录
  • 德州网站推广wordpress国内工作室主题
  • 企业网站信息化建设工程建设企业等采用
  • 用wordpress搭建网站休闲农业有哪些网络营销方式
  • 佛山市网站建设 乾图信息科技提升自己建设自己的网站
  • 个人摄影网站模版火车头采集器发布wordpress
  • 百万网站建设报价制作个人网站论文