Chinaunix

标题: 这种代码我如何编译啊 请高人指点! [打印本页]

作者: goooole    时间: 2009-02-19 14:02
标题: 这种代码我如何编译啊 请高人指点!
这种代码我如何编译啊 请高人指点!

ll.jpg (33.43 KB, 下载次数: 36)

ll.jpg

作者: cooper84    时间: 2009-02-19 14:07
gcc 有问题吗
作者: hardie    时间: 2009-02-19 14:11
apue
作者: cjcse    时间: 2009-02-19 14:18
标题: APUE里面的例子
需要把APUE书里面后面附录的ourhdr.h头文件敲到计算机里面,然后包含就ok了。
作者: goooole    时间: 2009-02-19 14:20
标题: 回复 #4 cjcse 的帖子
这一步如何实现?谢谢 我新手
作者: goooole    时间: 2009-02-19 14:29
搞定  !!!谢谢各位 !长路漫漫啊  CU真的让我很感动!

[ 本帖最后由 goooole 于 2009-2-19 14:32 编辑 ]
作者: zhuhefang2006    时间: 2009-02-19 14:30
代码哪里来的?
没有相关文档吗
仔细看看相关文档,应该会有相关说明的
作者: goooole    时间: 2009-02-19 14:34
原帖由 zhuhefang2006 于 2009-2-19 14:30 发表
代码哪里来的?
没有相关文档吗
仔细看看相关文档,应该会有相关说明的

----------------------------------------------------------
由于以后要做linux、unix下的东西 ,最近看了c程序设计,现在看unix环境高级编程!想运行一下书上的例子。谢谢你们的回复
作者: goooole    时间: 2009-02-19 14:40
头文件的问题搞定了


cc myls.c
------------------------------------------------------------------------------------------------------
#include    <sys/types.h>
#include    <dirent.h>
#include    "ourhdr.h"

int
main(int argc, char *argv[])
{
    DIR                *dp;
    struct dirent    *dirp;

    if (argc != 2)
        err_quit("a single argument (the directory name) is required";

    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);
}
-------------------------------------------------------------------------------------------------------




报错!!!!!!!!

/tmp/ccYYw6Jk.o: In function `main':
myls.c.text+0x24): undefined reference to `err_quit'
myls.c.text+0x5b): undefined reference to `err_sys'
collect2: ld returned 1 exit status
作者: action08    时间: 2009-02-19 14:41
晕,这就是linux的代码风格。。

你可以把那两个去掉,自己写个printf(),然后exit就完了....

[ 本帖最后由 action08 于 2009-2-19 14:43 编辑 ]
作者: goooole    时间: 2009-02-19 14:43
原帖由 action08 于 2009-2-19 14:41 发表
晕,这就是linux的代码风格。。

还请大侠赐教
作者: action08    时间: 2009-02-19 14:44
我没有做个linux下的开发,估计是gcc你少了选项。

你自己写个简单的exit就行了,犯不着调用系统库折腾。美曰:对平台特性依赖,越少越好。


===
到了以后写大软件的时候,都是系统设计者自定义的出错处理风格。

[ 本帖最后由 action08 于 2009-2-19 14:50 编辑 ]
作者: goooole    时间: 2009-02-19 14:57
原帖由 action08 于 2009-2-19 14:44 发表
我没有做个linux下的开发,估计是gcc你少了选项。

你自己写个简单的exit就行了,犯不着调用系统库折腾。美曰:对平台特性依赖,越少越好。


===
到了以后写大软件的时候,都是系统设计者自定义的出错处 ...

恩,谨记教诲  我才学。还没找到感觉的样子

不过谢谢你的指点
作者: cjcse    时间: 2009-02-19 16:47
原帖由 action08 于 2009-2-19 14:44 发表
我没有做个linux下的开发,估计是gcc你少了选项。

你自己写个简单的exit就行了,犯不着调用系统库折腾。美曰:对平台特性依赖,越少越好。


===
到了以后写大软件的时候,都是系统设计者自定义的出错处 ...



你没有看APUE,那不是什么系统库,而是作者为了方便输出错误消息写的一些函数,放到ourhdr.h头文件里面,和平台依赖性没有关系。再说,这本身就是APUE,Unix环境的程序,不依赖环境、不熟悉系统调用如何做Unix/Linux程序开发?在Unix下面做开发的人员,很多时候根本不用考虑平台无关性问题,都是基于特定的裁剪Linux内核运行于特定设备的。
作者: action08    时间: 2009-02-19 17:06
标题: 回复 #14 cjcse 的帖子
呵呵,表斗嘴,帮人家解决
作者: samon_fu    时间: 2009-02-20 00:39
那个头文件apue发布的源码包里有,往你当前目录做个软链接就可以了。
那个err_sys和err_quit在源码包里也有文件实现的,你编译的时候链接下就可以了。
作者: langue    时间: 2009-02-20 07:32
1、仔细读书上的说明,特别是前言和附录。这本书不是参考手册,所以应当从头看起。
2、阅读 APUE 需要一定的起点,最好已在相关平台下编写过一段时间的 C 程序,对平台有中等程度的理性认识,当然还要求你有较强的分析和动手能力。
3、论坛不是个需要如此谦卑的地方,轻松愉快是我们的主题。
作者: goooole    时间: 2009-02-21 19:54
今天我才发现我问的这个问题 太菜菜了

楼上说的“对平台有中等程度的理性认识”就是在平台下编写过一段时间的 C 程序吗?
我没做过什么大项目,只是用unix一年了,会一点gcc、系统设置什么的,不过最近打算进军开发的队伍

努力学习ing。。。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2