(一)概念

什么是函数库呢?一下子说概念大家可能不太熟悉,但是这实际上是大家在windows系统上经常见到的东西。没错,就是那些后缀为DLL的文件。

linux上实际也有自己的函数库文件,文件类型为.a或是.so,前者是静态函数库,后者是动态函数库。

静态函数库和动态函数库有什么区别?静态函数库和动态函数库在编译的时候都需要用到,但是不同的是,静态函数库在和程序一起编译的时候会把自己的函数程序加到程序当中,编译完之后程序就不再需要这个函数库了。也就是说,静态函数库只在编译的时候使用。但是动态函数库就不一样了,它和我们在windows下使用的动态链接库很像,编译的时候它里面的程序不会被编译到程序里,程序在运行的时候要带着它一起运行,也就是说程序编译和运行都需要它。

(二)Linux在编译的时候使用函数库

在linux之中使用函数库,并不是我们在代码中加上相关的头文件编译器就会自动找到函数库,把函数库中的程序编进去。我们还需要在编译的时候加上相应的函数库选项。

以rt(用于定时器)、pthread(用于多线程)、gumbo(之前的博文当中编译过的第三方函数库)为例:

gcc main.c -o main -lpthread

gcc main.c -o main -lrt

gcc main.c -o main -lgumbo

只要我们程序当中用到了某个函数库,就是在编译选项上加上“-l函数库名”,l是小写的L。

不过,如果函数库并没有被放在系统的默认搜索位置,像上面这样子编译是不行的。

你可以简单地以以下方式处理:

比如说,我们要用到gumbo这个函数库,但是它的函数库文件并没有放在默认搜索位置

(1)先找到libgumbo.a函数库文件,将其放在和自己的代码相同的目录位置

(2)编译的时候输入gcc main.c -o main ./libgumbo.a

还有其他更灵活的方式,大家可以自己查资料。

(三)在codeblock中添加函数库选项

(1)添加函数库编译选项的位置

点击Settings->Compiler 切换到Linker setting标签

(2)为了编译时添加相应的函数库,你可以在Link library下点击add 然后将其添加进去

以gumbo库为例

(3)如果函数库位于系统的默认搜索路径下面,也可以这样子设置

在Other linker options下添加-lpthread -lrt  -lgumbo这些选项

当然,你除了使用别人的函数库之外,也可以自己代码编译成函数库,像上文那样使用。那么怎样使用codeblock编译自己的代码成函数库呢?我们下一篇再说。

Linux c codeblock的使用(三):使用函数库的更多相关文章

  1. Linux下编译C代码,出现tan函数报错的情况

    undefined reference to `tan' 但是已经包含了头文件 <math.h>了,可还是报错,说是找不到tan 这个问题的原因不是很清楚, 但是网上给出的方案,就是编译的 ...

  2. 通过编译函数库来学习GCC【转】

    转自:http://blog.csdn.net/u012365926/article/details/51446295 基本概念 什么是库 在windows平台和linux平台下都大量存在着库. 本质 ...

  3. makefile笔记10 - makefile 函数库文件

    函数库文件也就是对 Object 文件(程序编译的中间文件)的打包文件.在 Unix 下,一般是由命令"ar"来完成打包工作. 一.函数库文件的成员 一个函数库文件由多个文件组成. ...

  4. Linux时间子系统之(三):用户空间接口函数

    专题文档汇总目录 Notes:用户空间时间相关接口函数: 类型 API 精度 说明 时间 time stime time_t 精度为秒级 逐渐要被淘汰.需要定义__ARCH_WANT_SYS_TIME ...

  5. 《Linux内核分析》第三周 构建一个简单的Linux系统MenuOS

    [刘蔚然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK THREE ...

  6. Linux就这个范儿 第18章 这里也是鼓乐笙箫 Linux读写内存数据的三种方式

    Linux就这个范儿 第18章  这里也是鼓乐笙箫  Linux读写内存数据的三种方式 P703 Linux读写内存数据的三种方式 1.read  ,write方式会在用户空间和内核空间不断拷贝数据, ...

  7. Linux就这个范儿 第15章 七种武器 linux 同步IO: sync、fsync与fdatasync Linux中的内存大页面huge page/large page David Cutler Linux读写内存数据的三种方式

    Linux就这个范儿 第15章 七种武器  linux 同步IO: sync.fsync与fdatasync   Linux中的内存大页面huge page/large page  David Cut ...

  8. Linux学习笔记13——使用curses函数库

    一 安装curses库 如果你的Linux系统中curses库,直接敲入命令sudo apt-get install libncurses5-dev,然后就会自动安装curses库,安装好之后敲入命令 ...

  9. linux curses函数库

    fedora20,安装yum install ncurses-devel 编译时:-lncurses 头文件:#include<curses.h> 参考:man ncurses \linu ...

随机推荐

  1. python基础_格式化输出(%用法和format用法)

      目录 %用法 format用法 %用法 1.整数的输出 %o —— oct 八进制%d —— dec 十进制%x —— hex 十六进制 1 >>> print('%o' % 2 ...

  2. Yii2 mysql查询 int自动变string解决办法

    原因是PDO以string查询数据导致. 这个与YII没关系,是PDO的默认处理,解决方法只需在配置中的db配置中加上attributes的相关配置就行了,如下: 'components' => ...

  3. 解决docker主机配置了DaoCloud.io的加速后重启失败问题Failed to start Docker Application Container Engine

    问题说明 正常运行的docker主机配置了DaoCloud.io加速后重启报如下错 解决过程 问题原因: 重新配置加速器后发现,daocloud的配置信息是写在/etc/docker/daemon.j ...

  4. 浅谈Tarjan算法

    从这里开始 预备知识 两个数组 Tarjan 算法的应用 求割点和割边 求点-双连通分量 求边-双连通分量 求强连通分量 预备知识 设无向图$G_{0} = (V_{0}, E_{0})$,其中$V_ ...

  5. tcp的三次握手,四次挥手

    为了更好的记住知识点,所以将最近学习的知识点记录下来: 最开始A和B都处于closed(关闭连接状态) 1.tcp的第一次握手:客户端A  向服务器端B 发送请求连接报文段(包含SYN=1,初始序号s ...

  6. xueping wang 记录

    https://www.bbsmax.com/A/lk5aVBod1O/ https://pkgs.org/statistics/ 在firefox的调试控制台, 下面有一个独立的分割的控制台窗口, ...

  7. Selenium常见问题

    1.使用python打开Chrome浏览器时,出现Chrome正受到自动测试软件的控制的提示 解决: 在浏览器配置里加个参数,忽略掉这个警告提示语,disable_infobars option = ...

  8. vim中文乱码问题

    问题如下: 修改 /etc/vimrc 文件 添加: ,ucs-bom,gb18030,gbk,gb2312,cp936 把/etc/vimrc复制到你自己的根目录下面:复制为.vimrc(前面有个点 ...

  9. excel 常用函数和实现功能经验总结积累

    0.判断一个文本字符串中是否包含数字!/判断一个文本字符串是否是纯汉字! 公式=IF(LENB(A1)=2*LEN(A1),”都是汉字“,“含有非汉字字符”) 解释函数: LEN(A1)#返回文本字符 ...

  10. 【python 3】 字符串方法操作汇总

    基础数据类型:str 1.1  字符串大小写转换 所有字母大写 : string.upper() 所有字母小写 : string. lower() 第一个单词的第一个字母大写,其他字母小写 :  st ...