运行apue (unix 环境高级编程)第一个例子

拿到APUE第三版,大家肯定都是想验证书上的代码,用调试代码的过程来学习本书。但是Linux不像Windows,linux是一个free(自由)软件,free软件带来的问题就是运行一个小小的程序都要折腾半天。现在把运行第一个程序的过程记录下来,以供后来查阅。

第一步,当然是下载书中的源码,省的自己费尽的敲,下载的是第三版,apue.3e,这里不得不吐槽一下,里面的代码组织很乱,不是按照章节列出的,不知是不是我下载的问题,还是作者故意为之。

第二步,apue.3e文件夹里有makefile文件,肯定要执行make命令了,可惜功力有限,目前看不懂这些makefile的功能,需要恶补一下makefile的知识了。

第三步,意料之中的编译不通过,错误提示:can,t find -lbsd,解决办法是添加libbsd.a的静态链接库。

第四步,运行apt-get update,然后apt-get install libbsd-dev,在运行apt-get update过程中,可能会遇到更新不成功的情况,一般是更新软件服务器的问题,只能找个比较好的ubuntu版本了,版本中设置了比较好用的服务器,否则自己找服务器也是苦逼的事情。

第五步,上述执行成功后,再make,OK。

第六步,将apue.h 拷贝到/usr/include/ 将./lib/libapue.a 拷贝到/usr/local/lib/ 为什么要将libapue.a移到/usr/local/lib中呢?原因是libapue.a是apue.h头文件中包含的所有函数及宏定义的具体实现,是一个静态链接库。

第七步,进入/apue.3e/intro,删除原来的ls1,然后编译ls1.c,然后就是十有八九的报错,undefined reference to `err_quit' undefined reference to `err_sys' ,真是苦逼,处处是坑的感觉。

第七步,/usr/include 下新建一个名为myerr.h的文件,文件内容我上传到csdn中

第八步,再编译ls1.c,终于成功,可以运行./ls1 /home,可以看到打印出目录里的文件了。

这些磕磕绊绊的过程确实和Windows下编程完全不是一个感觉,需要对Linux的系统及命令非常熟悉。

你可能感兴趣的:(APUE)