(一)概念

什么是函数库呢?一下子说概念大家可能不太熟悉,但是这实际上是大家在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. Spark大型电商项目实战-及其改良(3) 分析sparkSQL语句的性能影响

    之前的运行数据被清除了,只能再运行一次,对比一下sparkSQL语句的影响 纯SQL的时间 对应时间表 th:first-child,.table-bordered tbody:first-child ...

  2. MyTests

    目录 About Tests Selenium自动化测试 Pyppeteer Explain About Tests 扯淡!测试之瞎扯淡 Selenium自动化测试 什么是Selenium? Sele ...

  3. sed命令替换文件的内容【学习笔记】

    sed -i "s/line/Line/g" `grep "line" -rl /home//zhuangzebin/`

  4. linux服务基础(三)之Httpd2.4配置

    httpd-2.4 新特性: . MPM支持运行DSO机制,以模块形式按需加载 . 支持event MPM . 支持异步读写 . 支持每模块及每个目录分别使用各自的日志级别 . 每请求配置 <I ...

  5. buaacoding_2018算法期末上机G题.地铁建设题解

    // 标注:本文旨在为博主确立一种题解的基本范式,以避免博主的题解流于AC代码的粘贴.此基本范式为:完整而简洁明了的思路及其推导说明,力图触及问题的本质并衍生对同类问题的思路分析,使得题解具有泛用性, ...

  6. 微信小程序http连接访问解决方案

    HTTP + 加密 + 认证 + 完整性保护 = HTTPS,小程序考虑到信息安全的问题,选用了更为稳定安全的https 来进行信息传递. HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全 ...

  7. Codeforces 803 G. Periodic RMQ Problem

    题目链接:http://codeforces.com/problemset/problem/803/G 大致就是线段树动态开节点. 然后考虑到如果一个点还没有出现过,那么这个点显然未被修改,就将这个点 ...

  8. 集训队日常训练20181201 C 1003 : 种类数

    时间限制(普通/Java):2000MS/6000MS     内存限制:65536KByte总提交: 8            测试通过:5 描述 一共有 n个数,第 i 个数是 xi ,其中xi  ...

  9. 大牛的IT经验,方法【跟,帮】

    学习方法一:实践,应用,坚持. [swoole-韩天峰] 我最开始工作也是在2家小公司,后来加入腾讯阿里,主要原因还是我坚持学习基础知识,从而得到了这个机会.有几个方面的基础知识,我建议每一位PHP程 ...

  10. Git Learning2 GitHub upload

    1.在自己的github上创建一个仓库 2.git remote add [name] [link] 使用git来增加一个link的别名 3.git push [linkname] [分支名] 4.g ...