编译 apue2e 和 apue3e 代码
最近觉得一直写高层语言写的有点淡然无味了,遂拿起apue开始看起来,调和一下。
看到第一个例子的时候就看到代码 include 了作者自己的库,apue.h
然后下载源码后编译了几次才过,记录一下。。
###apue 2e
首先看README,需要根据系统更改Make.defines.{your system},的WKDIR,
然后先别make all
不然会遇到错误
1 | clang: warning: argument unused during compilation: '-ansi' |
然后到apue.2e/
1 |
需要加上最后3行,至于为啥详见这里
1 | With _POSIX_C_SOURCE or _DARWIN_C_SOURCE for i386, or when building for any other architecture, system and library calls conform to Version 3 of the Single UNIX Specification (``SUSv3''). |
编译完apue的lib后,如此编译代码:
1 | clang -Wall -I apue.2e/include/ ls1.c apue.2e/lib/libapue.a -o ls1 |
###apue 3e
话说下载源码的时候,看到官网上出现了第三版,于是果断下载了电子书,看看
话说第三版编译超级方便,直接make就行了。
1 | On Freebsd, type "gmake". |
但是。。。
又出现了这个报错
1 | clang: error: unknown argument: '-R.' [-Wunused-command-line-argument-hard-error-in-future] |
去apue.3e/db/
把它的makefile里面的-R去掉就行了。话说不管是装gem还是pip装python lib都不定期遇到这个问题,不过这次前置AFLAGS不知为何无效。clang认为他用不到的,你敢写?!
1 | # line20 |
然后就顺利编译完成,开始看书,写代码吧。
最后写代码推荐如果用vim的话,一定要配合https://github.com/Valloric/YouCompleteMe
谁用谁知道,自带语法检测,代码跳转,包办了syntastic,ctags的功能,极其强大!