本教程不提供Linux环境的安装,但我可以给出一些建议。

  • WSL(WIndows子系统)-微软官方教程。
  • 安装双系统或者Linux单系统。
  • 租一个Linux云服务器。
  • 虚拟机。

下载源代码

进入代码下载界面http://man7.org/tlpi/code/index.html,选择Distribution version或者Book version,直接下载。

或者我们这里使用wget下载,像这样:

wget "man7.org/tlpi/code/download/tlpi-190930-book.tar.gz"

解压下载的包

在当前目录打下面的命令:

tar -xfz tlpi-190930-book.tar.gz

这里稍微科普一下xfz的意义,这里有三个命令行参数,x代表extract(解压),f代表file(指定备份文件),z代表使用gzip解压,如果再加上v代表visible(显示操作过程)。

安装包的依赖库

安装一些依赖的库,我的系统是Ubuntu,根据BUILDING文档的要求安装依赖就好了:

sudo apt-get install libcap-dev
sudo apt-get install libacl1-dev
sudo apt-get install libselinux1-dev

编译源代码

然后进入解压出来的目录,用make编译整个项目:

cd tlpi-book
make

出现报错:

scm_cred_recv.c: In function ‘main’:
scm_cred_recv.c:20:5: error: unknown type name ‘bool’; did you mean ‘_Bool’?bool useDatagramSocket;^~~~_Bool
scm_cred_recv.c:43:25: error: ‘false’ undeclared (first use in this function); did you mean ‘pause’?useDatagramSocket = false;^~~~~pause
scm_cred_recv.c:43:25: note: each undeclared identifier is reported only once for each function it appears in
scm_cred_recv.c:48:33: error: ‘true’ undeclared (first use in this function); did you mean ‘free’?useDatagramSocket = true;^~~~free
<内置>: recipe for target 'scm_cred_recv.o' failed
make[1]: *** [scm_cred_recv.o] Error 1

看来部分文件出错了,可能是作者没注意,我们帮他改过来吧。

sockets目录下的好多文件的布尔类型声明错了,第三章中讲到了书中的布尔类型引用的是

typedef enum { FALSE, TRUE } Boolean;

这句话被定义在lib\tlpi_hdr.h里。

我们需要做的就是把所有的false改成FALSE,所有的true改成TRUE,例如:

Boolean useDatagramSocket;
useDatagramSocket = FALSE;
useDatagramSocket = TRUE;

统计了一下所以出错的文件列表如下:

scm_cred_recv.c
scm_cred_send.c
scm_multi_recv.c
scm_multi_send.c
scm_rights_recv.c
scm_rights_send.c

把所有的布尔类型全部换掉就可以成功编译了。

正式开始Linux的学习。

最后,给一个我自己修改后的下载链接:tlpi-191019

《Linux/Unix系统编程手册》源代码下载编译相关推荐

  1. linux/unix系统编程手册11-15

    title: linux/unix编程手册-11_15 date: 2018-05-27 11:53:07 categories: programming tags: tips linux/unix编 ...

  2. Linux/Unix系统编程手册 第三章:系统编程概念

    本章介绍系统编程的基础概念和一些后续章节用到的函数及头文件,并说明了可移植性问题. 系统调用是受控的内核入口,通过系统调用,进程可以请求内核以自己的名义去执行某些动作,比如创建子进程,执行I/O操作, ...

  3. Linux/UNIX系统编程手册gg

    Linux系统: "所见皆文件" 一个比较好的博客 一.Linux基础操作 Linux系统目录: bin:存放二进制可执行文件 boot:存放开机启动程序 dev:存放设备文件: ...

  4. linux_unix系统编程手册源代码编译

    环境ubuntu16.04 编译的时候提示 cc -c -g -std=c99 -D_XOPEN_SOURCE=600 -D_DEFAULT_SOURCE -g -I../lib -pedantic ...

  5. Linux/Unix系统编程 五:进程

    进程是一个可执行程序的实例. 一.linux系统进程管理 1.进程管理的作用 判断机器健康状态 查看系统中所有进程 杀手进程 2.查看系统进程 1.ps -aux BSD操作系统格式: TTY说明: ...

  6. Linux系统编程手册-源码的使用

    Linux系统编程手册-源码的使用 转自:http://www.cnblogs.com/pluse/p/6296992.html 第三章后续部分重点介绍了后面章节所要使用的头文件及其实现,主要如下: ...

  7. ①Linux简明系统编程(嵌入式公众号的课)---总课时12h

    10.09 注意:这个是Linux高级编程的简明教程,是Linux应用程序的开发,而不是底层程序的开发. 内容是关于操作系统和网络编程的吗? Linux简明系统编程 〇.课程思维导图 〇.会用到的头文 ...

  8. 5w字总结 Unix系统编程学习笔记(面试向)(Unix环境高级编程/Unix环境程序设计)

    文章目录 一.计算 C语言的数据表示与处理 计算 C语言的基本运算操作 内存表和符号表 类型转换 函数类型的分析 指令 复合指令 句法 函数 函数激活(Activation Record) 函数激活定 ...

  9. UNIX系统编程(1)

    注:本文来自"网易"博主,仅阅读,学习 第一章:什么是系统编程  UNIX系统编程,简单的说就是"C语言+系统调用(system call)",学会了C语言再知 ...

  10. LINUX C系统编程与PYTHON中的时间模块对比

    今天看python时间模块time的时候发现和LINUX系统编程中的时间调用函数基本一样,以前刚好没有好好学习LINUX C编程的时间模块就对比进行了学习. 本文只是给出函数接口和使用方式,详细了解请 ...

最新文章

  1. window下不用安装虚拟机,也可以玩转linux,玩转最新redis
  2. Nginx URL 重写
  3. maven 项目管理和构建工具
  4. 17-Docker的数据持久化介绍
  5. c语言中'.'与'-'的区别
  6. js apply/call/caller/callee/bind使用方法与区别分析
  7. php 请求java_怎么php发送get请求给Java,然后返回想要的具体参数
  8. python标点符号全是英文吗_python 过滤中文、英文标点特殊符号
  9. [原]Greenplum failed segment的恢复方法
  10. AndroidHttpCapture抓包工具
  11. WimTool WinPE教程 (修改PE外置程序)
  12. octet和byte的差异
  13. MobileNetV2: Inverted Residuals and Linear Bottlenecks(MobileNetV2)-论文阅读笔记
  14. android L和android M的区别
  15. Java开发人员必备工具之 10 个大数据工具和框架
  16. Latex 设置表格字体垂直居中且水平居中,字体放在表格最中央之简单好用的方法
  17. 【真题分享】2021京东春招java开发面试
  18. AD9361配置(1)
  19. win git 报错 no matching host key type found. Their offer: ssh-rsa
  20. java逻辑值_java、 若x = 5,y = 10,则x y和x = y的逻辑值分别为 和 。...

热门文章

  1. 新版换密交友月老盲盒微信小程序源码
  2. Elasticsearch:使用 Python 进行 Bulk insert 及 Scan
  3. 最新诺顿病毒库报暴风影音7.0有毒![原]
  4. win10搭建无盘服务器配置,win10系统无盘安装教程
  5. 使用MySQLWorkBench绘制ER图详解
  6. Ubuntu 14.04 下安装wiznote客户端
  7. WebView load**方法 加载资源【总结】
  8. HTTP权威指南------1.1HTTP概述
  9. 实对称矩阵的特征值求法_MIT—微分方程与线性代数笔记6.5 对称矩阵,实特征值,正交特征向量...
  10. 软件测试 之Web项目实战解析(附全套实战项目教程+视频+源码)