APUE需要编译吗

来源:互联网 发布:自制食品如何在淘宝 编辑:程序博客网 时间:2024/04/30 16:14


没编译的必要,把书本后面的两个头文件apue.h和error.c (在apue.2e里面自己找找。)文件提取出来apue.h放到/usr/include/下面  将error.c的#include"apue.h"更改为 #include<apue.h>即可。书中的代码自己敲一便,将自己敲的源代码与error.c一起编译即可。编译过程提示什么函数未定义就再去apue.2e里面正则一下查找包含该函数的定义的文件包含进来一起编译即可。解决方法请看下面代码框。


http://www.oschina.net/question/813940_72126


致命错误: apue.h:没有那个文件或目录编译中断。

解决方法如下:

//在www.apuebook.com网站下载书中源代码$ wget http://www.apuebook.com/src.2e.tar.gz$ tar zxvf src.tar.gz$ cd apue.2e///更改apue.h文件$ nano ./include/apue.h在最后一行 #endif  /* _APUE_H */前面添加一行 #include "error.c"Ctrl + o     Ctrl +x//更改error.c文件$ nano ./lib/error.c删除开头的 #include "apue.h"Ctrl + oCtrl + x<strong>//将apue.h error.c 两个文件复制到目录/usr/include$ sudo cp ./include/apue.h  ./lib/error.c /usr/include///如果出现权限不够问题:$ sudo chmod a+r /usr/include/error.c$ sudo chmod a+r /usr/include/apue.h//示例 /*#include <stdio.h>  // NULL printf()#include <dirent.h>#include <stdlib.h> //exit()*/#include <apue.h>#include <dirent.h>int main (int argc, char *argv[]){  DIR *dp;  struct direct *dirp;  if (argc != 2)    error_quit("usage : ls directory_name");  if ((dp = opendir(argv[1])) == NULL)    err_sys("can't open  %s", argv[1]);  while ((dirp = readdir(dp)) != NULL)    printf("%s\n",dirp->d_name);  closedir(dp);  exit(0);}/*$ gcc 1-1.c1-1.c: In function ‘main’:1-1.c:13:16: warning: assignment from incompatible pointer type [enabled by default]1-1.c:14:23: error: dereferencing pointer to incomplete type*/ 




原创粉丝点击