第一个程序 myls 查找目录下文件

由于是第一个程序,环境没有配置好,报错如下:

             myls.c:1:19: apue.h: No such file or directory
             myls.c: In function `main':
             myls.c:13: error: `NULL' undeclared (first use in this function)
             myls.c:13: error: (Each undeclared identifier is reported only once
             myls.c:13: error: for each function it appears in.)

 看编译后的错误信息,原来是找不到头文件apue.h。

下载,APUE2源代码下载:http://www.apuebook.com/src.tar.gz

解压:解压缩:tar -xzvf src.tar.gz

  将源代码解压后会出现目录apue.2e。将apue.2e下的include目录里面的apue.h文件拷贝至/usr/include。

                 cd  apue.2e所在目录(如 /home/chen)

                 cd  include

                 cp  apue.h /usr/include

说明:因为还要一个文件下面会提到(马上,^_^) ,在最后一行#endif    /* _APUE_H */前面添加一个声明:

         #include "myerr.h"  

再编译还是出问题:

             /tmp/ccBBopm0.o(.text+0x2b): In function `main':
            : undefined reference to `err_quit'
            /tmp/ccBBopm0.o(.text+0x5f): In function `main':
            : undefined reference to `err_sys'
            collect2: ld returned 1 exit status

     原来是找不到err_quit函数和err_sys函数的定义。

     其实这两个函数在《unix环境高级编程》一书的附录B中可以找到。

     在这里给出一种解决办法。

     转到目录/usr/include,创建文件myerr.h。将下列代码添加至此文件:

 

复制:

cp myerr.h /usr/include

编译myls程序:

gcc   -o myls myls.c

这次获得成功,运行:

./myls  /usr

出现如下结果

                                                 22:04:09

参考:http://haoshuang3394.javaeye.com/blog/418327

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值