c 静态库,c++静态库

  c 静态库,c++静态库

  有时候需要把一组代码编译成一个库,这个库在很多项目中都要用到,例如文件就是这样一个库,我们在不同的程序中都会用到文件中的库函数(例如printf),也会用到文件中的变量(例如以后要讲到的包围变量)。本节介绍怎么创建这样一个库。

  我们继续用stack.c的例子。为了便于理解,我们把stack.c拆成四个程序文件(虽然实际上没太大必要),把主网站改得简单一些,头文件stack.h不变,本节用到的代码如下所示:

  /* stack.c */

  字符堆栈[512];

  int top=-1;

  /* push.c */

  外部字符堆栈[512];

  外部内部顶部

  无效推送(字符c)

  stack[top]=c;

  }

  /* pop.c */

  外部字符堆栈[512];

  外部内部顶部

  字符弹出(无效)

  返回堆栈【顶-】;

  }

  /* is_empty.c */

  外部内部顶部

  (同Internationalorganizations)国际组织是_empty(无效)

  return top==-1;

  }

  /* stack.h */

  #ifndef STACK_H

  #定义堆栈_H

  外部空的推送(char);

  外部字符弹出(作废);

  外部内部是_ empty(void);

  #endif

  /* main.c */

  #包含标准视频

  #include stack.h

  int main(void)

  push( a );

  返回0;

  }

  这些文件的目录结构是:

  $树

   - main.c

  `-堆栈

   - is_empty.c

   -流行音乐

   - push.c

   - stack.c

  `- stack.h

  一个目录,6个文件

  我们把stack.c、push.c、pop.c、is_empty.c编译成目标文件:

  $ gcc-c栈/栈。c栈/推。c栈/pop。c栈/is _ empty。c

  然后打包成一个静态库libstack.a:

  $ ar RS库堆栈。一摞。o推。哦,爸爸。o是_空。o

  ar:创建库栈. a

  库文件名都是以解放运动开头的,静态库以a作为后缀,表示存档。阿肯色州命令类似于水手命令,起一个打包的作用,但是把目标文件打包成静态库只能用阿肯色州命令而不能用水手命令。选项r表示将后面的文件列表添加到文件包,如果文件包不存在就创建它,如果文件包中已有同名文件就替换成新的100 .s是专用于生成静态库的,表示为静态库创建索引,这个索引被链接器使用兰利布命令也可以为静态库创建索引,以上命令等价于:

  $ ar r库堆栈。一摞。o推。哦,爸爸。o是_空。o

  $ ranlib libstack.a

  然后我们把库栈。a和主网站编译链接在一起:

  海湾合作委员会主要成员。c-l。-lstack-I stack-o main

  -我选项告诉编译器去哪里找需要的库文件,-我。表示在当前目录找2008-lstack告诉编译器要链接libstack库,-我选项告诉编译器去哪里找头文件。注意,即使库文件就在当前目录,编译器默认也不会去找的,所以-我。选项不能少。编译器默认会找的目录可以用-打印-搜索-目录选项查看:

  海湾合作委员会打印-搜索-目录

  安装:/usr/lib/gcc/i486-Linux-GNU/4。3 .2/

  程序:=/usr/lib/gcc/i486-Linux-GNU/4。3 .2/:/usr/lib/gcc/i486-Linux-GNU/4。3 .2/:/usr/lib/gcc/i486-Linux-GNU/:/usr/lib/gcc/i486-Linux-GNU/4。3 .2/:/usr/lib/gcc/i486-Linux-GNU/:

  库:=/usr/lib/gcc/i486-Linux-GNU/4。3 .2/:/usr/lib/gcc/i486-Linux-GNU/4。3 .2/:/usr/lib/gcc/i486-Linux-GNU/4。3 .2/http://www。cn博客。com/http://www。cn博客。com/i486-Linux-GNU/lib/i486-Lin./lib/:/usr/lib/gcc/i486-Linux-GNU/4。3 .2/http://www。cn博客。com/./i486-Linux-GNU/4。3 .2/:/usr/lib/gcc/i486-Linux-GNU/4。3 .2/http://www。cn博客。com/http://www。cn博客。com/lib/:/lib/i486-Linux-GNU/4。3 .2/:/lib/./lib/:/usr/lib/i486-Linux-GNU/4。3 .2/:/usr/lib/./lib/:/usr/lib/gcc/i486-Linux-GNU/4。3 .2/http://www。cn博客。com/http://www。cn博客。com/i486-Linux-GNU/lib/:/usr/lib/gcc/i486-Linux-GNU/4。3 .2/http://www。cn博客。com/./:/lib/:/usr/lib/

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • office2010激活密钥大全 怎么永久激活office2010
  • project2010产品密钥免费_project2010激活密钥永久激活码
  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • chatgpt是什么?为什么这么火?
  • ChatGPT为什么注册不了?OpenAI ChatGPT的账号哪里可以注册?
  • OpenAI ChatGPT怎么注册账号?ChatGPT账号注册教程
  • chatgpt什么意思,什么是ChatGPT ?
  • CAD中怎么复制图形标注尺寸不变,CAD中怎么复制图形线性不变
  • cad中怎么创建并使用脚本文件,cad怎么运行脚本
  • cad中快速计算器的功能,cad怎么快速计算
  • cad中快速修改单位的方法有哪些,cad中快速修改单位的方法是
  • cad中心点画椭圆怎么做,cad轴测图怎么画椭圆
  • CAD中常用的快捷键,cad各种快捷键的用法
  • 留言与评论(共有 条评论)
       
    验证码: