第一个例子报的错,在哪里有apue.h?

zlcqupt 2007-04-23 11:16:43
root@czl:/home/czl/gcc# gcc main.cpp
main.cpp:1:18: error: apue.h: 没有那个文件或目录
main.cpp: In function ‘int main(int, char**)’:
main.cpp:11: 错误:‘err_quit’ 在此作用域中尚未声明
main.cpp:13: 错误:‘NULL’ 在此作用域中尚未声明
main.cpp:15: 错误:‘err_sys’ 在此作用域中尚未声明
main.cpp:17: 错误:‘NULL’ 在此作用域中尚未声明
main.cpp:19: 错误:‘printf’ 在此作用域中尚未声明
main.cpp:22: 错误:‘exit’ 在此作用域中尚未声明


find / -name apue.h
没有找到这个文件
是不是没有装相应的包啊?
...全文
2393 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
当运行书上的第一个例子时,出现如下错误,请问为什么????
root@gary-desktop:/home/user/apue.2e# cc yxw.c
./yxw.o:无法执行二进制文件
  • 打赏
  • 举报
回复
有没有运行书上例子的具体实例啊?
wang1990yujin 2011-12-02
  • 打赏
  • 举报
回复
。。。
CYBEREXP2008 2011-04-24
  • 打赏
  • 举报
回复
初学《UNIX环境高级编程》的朋友都会遇到一个问题,运行里面的实例(download: http://www.apuebook.com/)时就出现问题,提示 "错误:apue.h:没有那个文件或目录".
apue.h是作者自定义的一个头文件,包括程序所需的常用头文件及出错处理函数。所以因该将它放入系统头文件中(Linux下是 /usr/include),这样gcc编译器就可以找到它了。
先去那个网站downlowd apue 的tar.gz包,然后解压至电脑中的某个目录,比如我的是在/home/user/下,然后进入解压目录apue.2e,修改Make.defines.linux中的WKDIR=/home/xxx/apue.2e,为WKDIR=/home/user/apue.2e,这就是我们将要make的工作目录,然后再进入std目录,用vi打开linux.mk,将里面的nawk全部改为awk,可以使用这个命令 :%s/nawk/awk/g (注意前面有冒号)
然后 make
然后按下面的步骤做
1. 超级用户权限登入 #cd /usr/include
2. 将apue.h和error.c两个文件copy到该目录下。(apue.h位于 your_apue_path/inlcude ; error.c位于your_apue_path/lib )
以我的了路径为例:
#cp /home/ucfree/apue.2e/inlcude/apue.h .
#cp /home/ucfree/apue.2e/lib/error.c . (实现apue.h中的出错处理函数)
3. 编辑apue.h
#vi apue.h
在最后一行 #endif 前面添加一行 #include "error.c"
:wq 保存,退出.

这样你就可以运行下载的apue程序了.
ayw215 2007-04-23
  • 打赏
  • 举报
回复
可以
基本上没什么区别
zlcqupt 2007-04-23
  • 打赏
  • 举报
回复
我可以在linux下用那些书中的源代码吗?
zlcqupt 2007-04-23
  • 打赏
  • 举报
回复
哪位老大发一个啊
zlcqupt 2007-04-23
  • 打赏
  • 举报
回复
回复人:iu_81(黄云万里动风色,白波九道流雪山。) ( 五级(中级)) 信誉:100
==================
再给我发个相应的错误处理的.cpp
谢谢
  • 打赏
  • 举报
回复
这个是书中自带的头文件.
oyd 2007-04-23
  • 打赏
  • 举报
回复
那本书的附录里面
iu_81 2007-04-23
  • 打赏
  • 举报
回复
你得使用作者的实现
zlcqupt 2007-04-23
  • 打赏
  • 举报
回复
root@czl:/home/czl/gcc# cc main.cpp
/tmp/ccpub71K.o: In function `main':
main.cpp:(.text+0x2b): undefined reference to `err_quit(char const*, ...)'
main.cpp:(.text+0x66): undefined reference to `err_sys(char const*, ...)'
/tmp/ccpub71K.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
collect2: ld 返回 1
root@czl:/home/czl/gcc#
zlcqupt 2007-04-23
  • 打赏
  • 举报
回复
在哪里有这个?
iu_81 2007-04-23
  • 打赏
  • 举报
回复
#ifndef _APUE_H
#define _APUE_H

#include <stdarg.h>

#define _XOPEN_SOURCE 600

#include <sys/types.h>
#include <sys/stat.h>
#include <sys/termios.h>
#ifndef TIOCGWINSZ
#include <sys/ioctl.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
#include <string.h>
#include <unistd.h>
#include <signal.h>
#define MAXLINE 4096

#define FILE_MODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)
#define DIR_MODE (FILE_MODE | S_IXUSR | S_IXGRP | S_IXOTH)

typedef void Sigfunc(int); /*for signal handlers*/

#if defined(SIG_IGN) && !defined(SIG_ERR)
#define SIG_ERR ((Sigfunc*)-1)
#endif

#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))

char *path_alloc(int *);
long open_max(void);
void clr_fl(int,int);
void set_fl(int,int);
void pr_exit(int);
void pr_mask(const char *);
Sigfunc *signal_intr(int,Sigfunc *);

int tty_cbreak(int);
int tty_raw(int);
int tty_reset(int);
int tty_atexit(void);
#ifdef ECHO /*only if <termios.h> has been included*/
struct termios *tty_termios(void);
#endif

void sleep_us(unsigned int);
ssize_t readn(int,void*,size_t);
ssize_t writen(int,const void*,size_t);
void daemonize(const char *);

int s_pipe(int *);
int recv_fd(int,ssize_t (*func)(int,const void*,size_t));
int send_fd(int,int, ...);
int send_err(int,int,const char*);
int serv_listen(const char *);
int serv_accept(int,uid_t*);
int cli_conn(const char *);
int buf_args(char *,int (*func)(int,char **));

int ptym_open(char *,int);
int ptys_open(char *);
#ifdef TIOCGWINSZ
pid_t pty_fork(int *,char *,int,const struct termios *,const struct winsize*);
#endif

int lock_reg(int,int,int,off_t,int,off_t);
#define read_lock(fd,offset,whence,len) \
lock_reg((fd),F_SETLK,F_RDLCK,(offset),(whence),(len))
#define readw_lock(fd,offset,whence,len) \
lock_reg((fd),F_SETLKW,F_RDLCK,(offset),(whence),(len))
#define write_lock(fd,offset,whence,len) \
lock_reg((fd),F_SETLK,F_WRLCK,(offset),(whence),(len))
#define writew_lock(fd,offset,whence,len) \
lock_reg((fd),F_SETLKW,F_WRLCK,(offset),(whence),(len))
#define un_lock(fd,offset,whence,len) \
lock_reg((fd),F_SETLK,F_UNLCK.(offset),(whence),(len))

pid_t lock_test(int,int,off_t,int,off_t);
#define is_read_lockable(fd,offset,whence,len) \
(lock_test((fd),F_RDLCK,(offset),(whence),(len))==0)
#define is_write_lockable(fd,offset,whence,len) \
(lock_test((fd),F_WRLCK,(offset),(whence),(len))==0)

void err_dump(const char*, ...);
void err_msg(const char *, ...);
void err_quit(const char*, ...);
void err_exit(int,const char*, ...);
void err_ret(const char*, ...);
void err_sys(const char*, ...);

void log_msg(const char *, ...);
void log_open(const char*,int,int);
void log_quit(const char*, ...);
void log_ret(const char *, ...);
void log_sys(const char *, ...);

void TELL_WAIT(void);
void TELL_PARENT(pid_t);
void TELL_CHILD(pid_t);
void WAIT_PARENT(void);
void WAIT_CHILD(void);

#endif
iambic 2007-04-23
  • 打赏
  • 举报
回复
翻到这本书的前言,有源码的网址。

65,054

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧