关于《linux/unix系统编程手册》的读书笔记1

关于网络编程的学习,最近被安利了一本书,叫《linux/unix系统编程手册》。坦率的讲,这个名字听起来给人一种有点low的感觉,有点像《七天搞定xxx》一类的书。

但是一看,真是了不得。看的浑身起鸡皮疙瘩。居然还有讲linux讲的这么好的书。之前看过被称为linux 圣经的《unix 环境高级编程》(居然还是我导师翻译的!!),书是很好,但是看的很艰难。但是这本书,读起来极其舒服,把道理讲的很清楚,然后非常好理解。书的英文名字是 《 The Linux Programming Interface 》作者是 迈克尔 Kerrisk 。

一口气看了几章,然后从官网上可以下载到tlpi的源代码,想看一下源码,然后试着在本地跑一下。
下载链接:http://www.man7.org/index.html

下源码的时候,看到网上很多了问如何编译,或者是编译出错的问题。

主目录下有Makefile文件,作者定义了
在build可执行文件的方法。

那么就很简单了,直接在主目录下执行make。然后就编译好了所以的文件,生成可执行文件。

《关于《linux/unix系统编程手册》的读书笔记1》 image.png

网上有人make出错,我是没有问题。Linux的版本是:

zhaozheng@ubuntu:~/code/c++/tlpi/tlpi-book/sockets$ cat /etc/issue
Ubuntu 16.04 LTS \n \l

gcc的版本是:

zhaozheng@ubuntu:~/code/c++/tlpi/tlpi-book/sockets$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 5.4.0-6ubuntu1~16.04.4' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 

make 之后,会生成可执行文件,就make 成功了。

《关于《linux/unix系统编程手册》的读书笔记1》 image.png

<br />

关于Makefile 和 bash

先占个坑,以后再来总结

补坑1:
关于make的使用
http://www.jianshu.com/p/0107cae15e5a

如果你不想用make命令,那你也可以写GCC这种的命令来编译。但是一个要主要 很多头文件都不在当前目录,需要在GCC加上 -Iinclude的选项。一定要仔细检查源代码需要的头文件。

    原文作者:zhaozhengcoder
    原文地址: https://www.jianshu.com/p/c80c30c61748
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞