免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3463 | 回复: 4
打印 上一主题 下一主题

(已解决) 请教 linux 编译/链接 问题 (apue2e) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-26 21:21 |只看该作者 |倒序浏览
目前在看 apue 2e,在试书中的例子时,总是编译不过。不知道为什么,帮忙看一下。谢谢!

gcc SigUsr.c

返回出错信息
/tmp/cczcMa7A.o(.text+0x31): In function `main':
: undefined reference to `err_sys'
/tmp/cczcMa7A.o(.text+0x56): In function `main':
: undefined reference to `err_sys'
/tmp/cczcMa7A.o(.text+0x9d): In function `sig_usr':
: undefined reference to `err_dump'
collect2: ld returned 1 exit status


在同一目录下,有
apue.h
apueerr.c
apuelog.c
SigUsr.c

apue.h apueerr.c apuelog.c 都是从 apuebook 网站上下载的。

其中,apueerr.c 和 apuelog.c 已经用命令  gcc -c apueerr.c apuelog.c 编译。成功生成 apueerr.o apuelog.o 。

我不知道 gcc 的链接规则,不知道把一个 .h 里面的定义分在两个 .c 文件定义是不是不行的。

[ 本帖最后由 trailblazer 于 2006-7-26 21:44 编辑 ]

relateFiles.tar

20 KB, 下载次数: 38

四个相关文件

论坛徽章:
0
2 [报告]
发表于 2006-07-26 21:25 |只看该作者
把err_sys和err_dump换成printf("error");就行了

论坛徽章:
0
3 [报告]
发表于 2006-07-26 21:43 |只看该作者

问题找到了

在 apuelog.c 里面,有这么一个声明。


  1. /*
  2. * Caller must define and set this: nonzero if
  3. * interactive, zero if daemon
  4. */
  5. extern int        log_to_stderr;
复制代码


我在 SigUsr.c 文件里面加上这个变量的定义就可以了。
链接成功

论坛徽章:
0
4 [报告]
发表于 2006-07-27 08:09 |只看该作者
我昨天的解决方法是加上:#include "fig.B.3"
呵呵

论坛徽章:
0
5 [报告]
发表于 2006-07-27 13:46 |只看该作者
应该是我编译的输入参数不对。没有把已经生成的 .o 文件作为参数传给 gcc 。晚上回去再试试。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP