Linux c codeblock的使用(三):使用函数库
(一)概念
什么是函数库呢?一下子说概念大家可能不太熟悉,但是这实际上是大家在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的使用(三):使用函数库的更多相关文章
- Linux下编译C代码,出现tan函数报错的情况
undefined reference to `tan' 但是已经包含了头文件 <math.h>了,可还是报错,说是找不到tan 这个问题的原因不是很清楚, 但是网上给出的方案,就是编译的 ...
- 通过编译函数库来学习GCC【转】
转自:http://blog.csdn.net/u012365926/article/details/51446295 基本概念 什么是库 在windows平台和linux平台下都大量存在着库. 本质 ...
- makefile笔记10 - makefile 函数库文件
函数库文件也就是对 Object 文件(程序编译的中间文件)的打包文件.在 Unix 下,一般是由命令"ar"来完成打包工作. 一.函数库文件的成员 一个函数库文件由多个文件组成. ...
- Linux时间子系统之(三):用户空间接口函数
专题文档汇总目录 Notes:用户空间时间相关接口函数: 类型 API 精度 说明 时间 time stime time_t 精度为秒级 逐渐要被淘汰.需要定义__ARCH_WANT_SYS_TIME ...
- 《Linux内核分析》第三周 构建一个简单的Linux系统MenuOS
[刘蔚然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK THREE ...
- Linux就这个范儿 第18章 这里也是鼓乐笙箫 Linux读写内存数据的三种方式
Linux就这个范儿 第18章 这里也是鼓乐笙箫 Linux读写内存数据的三种方式 P703 Linux读写内存数据的三种方式 1.read ,write方式会在用户空间和内核空间不断拷贝数据, ...
- 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 ...
- Linux学习笔记13——使用curses函数库
一 安装curses库 如果你的Linux系统中curses库,直接敲入命令sudo apt-get install libncurses5-dev,然后就会自动安装curses库,安装好之后敲入命令 ...
- linux curses函数库
fedora20,安装yum install ncurses-devel 编译时:-lncurses 头文件:#include<curses.h> 参考:man ncurses \linu ...
随机推荐
- Node.js基础学习三之登录功能
本篇介绍Node.js访问数据库并返回数据给客户端 需求基于Node.js学习(二) 数据库请下载:user.sql 1.创建user 实体类(model-user.js) function User ...
- Gitlab安装、汉化及使用
环境:centos 关闭防火墙和selinux [root@Gitlab ~]# setenforce [root@Gitlab ~]# service iptables stop && ...
- PHP共享内存yac操作类
http://www.laruence.com/2013/03/18/2846.html 鸟哥介绍 https://www.cnblogs.com/willamwang/p/8918377.htm ...
- psutil的几个例子
python进行系统相关操作时都有点力不从心,尤其是windows下,比如获取进程的cpu.内存等等,可以通过以下方法可以达到这种要求: 1.安装pywin32.psutil这种第三方库,里面提供了很 ...
- Hadoop2-HDFS学习笔记之入门(不含YARN及MR的调度功能)
架构 Hadoop整体由HDFS.YARN.MapReduce三大部分组成,推荐架构参考:https://www.cnblogs.com/zhjh256/p/10573684.html. 注:2.x的 ...
- Hibernate的Cascade——级联操作
在Hibernate中,针对持久化实体的配置文件中有Cascade这样一个属性,顾名思义就是级联,也就是说在操作当 前实体时,针对当前实体的操作会影响到相应配置的关联实体.比如针对当前实体进行保存操作 ...
- 王之泰201771010131《面向对象程序设计(java)》第十三周学习总结
第一部分:理论知识学习部分 第11章 事件处理 11.1 事件处理基础 a)事件源(event source):能够产生事件的对象都可 以成为事件源,如文本框.按钮等.一个事件源是一个 能够注册监听 ...
- CF1062E Company
CF1062E Company 链接 cf luogu 题目大意 给定一颗树,有若干个询问,每个询问给出 l,r,要求编号为 ll~rr 的点任意删去一个之后剩余点的 LCA 深度最大,输出删去点的编 ...
- python链接mysql获得某列最大值
import pymysqlconn = pymysql.connect(host='10.1.2.198', port= 3306 ,user='root',passwd='123456',db=' ...
- HDU 1560 DNA sequence(DNA序列)
HDU 1560 DNA sequence(DNA序列) Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K ...