(一)概念

什么是函数库呢?一下子说概念大家可能不太熟悉,但是这实际上是大家在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. mysql和oracle分页查询

    MYSQL分页查询 方式1: select * from table order by id limit m, n; 该语句的意思为,查询m+n条记录,去掉前m条,返回后n条记录.无疑该查询能够实现分 ...

  2. Varnish 初识

    基础 Varnish Cache是​​一种Web应用程序加速器,也称为缓存HTTP反向代理.您将它安装在任何HTTP的服务器前面,并将其配置为缓存内容.Varnish Cache非常非常快.它通常可以 ...

  3. 页面适配的小栗子 - github

    我模拟了一个QQ音乐的radiostation页面,用了媒体查询以及流式布局,页面大部分内容是js根据json生成的,使用了less来编写css样式表. 下面是仓库地址,感兴趣的小伙伴可以打开看看,将 ...

  4. Bresenham算法

    1 算法原理 基本原理从某处摘得:设直线方程为yi+1=yi+k(xi+1-xi)+k.假设列坐标象素已经确定为xi,其行坐标为yi.那么下一个象素的列坐标为xi+1,而行坐标要么为yi,要么递增1为 ...

  5. python第二天3.1

    算数运算符arithmetic operator: + - * / % % : 取余,取模.取的是第一个操作数和第二个操作数除法的余数.整除结果为0. 10 % 3              1 10 ...

  6. [ZOJ 4020] Traffic Light

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4020 很简单的一个bfs题,是我想多了. 顺便学习一下C++的S ...

  7. chromdriver与geckodriver和浏览器版本问题

    chromdriver74与chrom74对应 geckodriver024与Firefox66对应 亲测有效

  8. pip安装报错

    ERROR: Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall.bat) python通过pip或者源码来安装某些模块时,这 ...

  9. 使用Keepalived配置主从热备实现Nginx高可用(HA)

    Keepalived 简要介绍 Keepalived 是一种高性能的服务器高可用或热备解决方案,Keepalived 可以用来防止服务器单点故障的发生,通过配合 Nginx 可以实现 web 前端服务 ...

  10. P2678 跳石头

    传送门 思路: 二分跳跃的最短距离 mid .暴力判断如果有两个石头直接的距离小于 mid ,就把这个石头拿走.如果拿走的石头数目 cnt ≤ m,说明二分的答案可行,ans = mid,接着二分更短 ...