美文网首页
tlpi_hdr.h头文件的使用以及配置

tlpi_hdr.h头文件的使用以及配置

作者: 情书LSC | 来源:发表于2018-09-01 10:42 被阅读326次

本章介绍系统编程的基础概念和一些后续章节用到的函数及头文件,并说明了可移植性问题。

系统调用是受控的内核入口,通过系统调用,进程可以请求内核以自己的名义去执行某些动作,比如创建子进程,执行I/O操作,进行进程间的通信等。

系统调用与C语言的函数调用类似。但是系统调用的过程比C语言函数调用复杂,开销也大得多。

Linux 的系统调用通过 int 0x80 实现,用系统调用号来区分入口函数。操作系统实现系统调用的基本过程是:

应用程序调用库函数(API);

API 将系统调用号存入 EAX,然后通过中断调用使系统进入内核态;

内核中的中断处理函数根据系统调用号,调用对应的内核函数(系统调用);

系统调用完成相应功能,将返回值存入 EAX,返回到中断处理函数;

中断处理函数返回到 API 中;

API 将 EAX 返回给应用程序。

本章后续部分重点介绍了后面章节所要使用的头文件及其实现,主要如下:

ename.c.inc

error_functions.h

get_num.h

tlpi_hdr.h

其中ename.c.inc文件定义了一个字符串数组,用于对应错误码的名称。

error_functions.h文件声明了本书自定义的错误处理函数。

get_num.h文件声明了本书自定义的数值提取函数。

tlpi_hdr.h文件则包含了后续需用到的系统调用头文件。

由于存在3个头文件以及2个实现,每次编译时必须对实现也进行编译,为方便后续学习,采用将头文件复制到默认的编译器寻找目录下,并将实现打包成静态库,然后使用别名来默认链接静态库。

以Debian/Ubuntu为例,具体操作如下:

第一步:下载本书所给的源码文件

wget "http://man7.org/tlpi/code/download/tlpi-161214-dist.tar.gz"

或者点此下载

第二步:解压后,make编译

tar -zxvf tlpi-161214-dist.tar.gz

cd tlpi-dist/

make -j

第三步:拷贝头文件至系统目录

cd lib/

sudo cp tlpi_hdr.h /usr/local/include/

sudo cp get_num.h /usr/local/include/

sudo cp error_functions.h /usr/local/include/

sudo cp ename.c.inc /usr/local/include/

第四步:制作静态库文件

g++ -c get_num.c error_functions.c

ar -crv libtlpi.a get_num.o error_functions.o

sudo cp libtlpi.a /usr/local/lib

第五步:简化编译命令

alias gl++='new() { g++ $1 -ltlpi;}; new'

第五步需要在当前用户的主目录下的.bashrc文件中设置别名,由于alias不支持参数,因此需要使用函数来间接实现,并且接受一个参数$1以指定对某个源文件进行编译并链接之前的静态库libtlpi.a。配置完毕后重新读入.bashrc文件以生效。这里使用函数来接受一个参数存在一个缺点即只能使用一个命令行参数,多余参数将被忽略。

完成上面的步骤后,即可使用快捷命令来编译我们的程序了:

gl++ main.cpp

该命令将编译生成a.out文件。

如果不想使用第五步来简化,则每次编译手动来链接库,命令如下:

g++ main.cpp -o main -ltlpi

相关文章

  • tlpi_hdr.h头文件的使用以及配置

    本章介绍系统编程的基础概念和一些后续章节用到的函数及头文件,并说明了可移植性问题。 系统调用是受控的内核入口,通过...

  • (1)Cgo结构

    总结: 1、import "C" 是启用Cgo,以及cgo配置,头文件,C函数2、需要调用的C语言的内容使用/**...

  • 自定义大头针

    定位和地图可以分开使用 配置时需要条件编译 //地图的头文件 #import //定位的头文件 #import /...

  • OC 中使用 Swift类

    配置环境 查看 Product Module Name 是否为项目名称 使用 在需要使用的地方导入头文件项目名称-...

  • UILabel标签,动态排列

    TagsLabelFrame.m 使用: 1.引入头文件,以及定义变量 2.初始化

  • Xcode配置测试环境和线上环境

    内容简介:一般我们会用头文件配置环境,在需要使用的时候导入头文件即可,这样会更加简洁,职能更加专一,更好维护, 代...

  • 动态库framework

    1.创建 2.配置头文件 4.使用 使用时会报错(Reason: Image Not Found)解决方法 5.其...

  • Vulkan开发环境配置

    这里使用win10作为开发平台,IDE使用VS2019。首先是Vulkan的SDK配置,它包含头文件、标准层验证、...

  • git配置以及使用

    1.git下载:官网(http://git-scm.com); 安装,一路默认就好; 2.查看版本:git -ve...

  • JNI相关知识点

    1.生成JNI头文件 javac -h . Test.java 注意正确配置Java环境变量可使用javac -...

网友评论

      本文标题:tlpi_hdr.h头文件的使用以及配置

      本文链接:https://www.haomeiwen.com/subject/blwywftx.html