分页: 1 / 1
编译出现/usr/bin/ld: cannot find -lwho1 collect2: ld 返回 1 ?????
发表于 : 2009-10-20 16:44
由 zglcx123
代码: 全选
/*
照《Unix/Linux编程 实践教程》这本书上抄的源代码,但系统不一样
英文名:《Understanding Unix/Linux Programming》
这个程序功能:编写类似系统的who命令
*/
#include<stdio.h>
#include<utmp.h>
#include<fcntl.h>
#include<unistd.h>
#define SHOWHOST
int main(){
struct utmp current_record;
int utmpfd;
int reclen = sizeof(current_record);
if((utmpfd = open(UTMP_FILE, O_RDONLY)) == -1){
perror(UTMP_FILE);
exit(1);
}
while(read(utmpfd, ¤t_record, reclen) == reclen)
show_info(¤t_record);
close(utmpfd);
return 0;
}
show_info(struct utmp *utbufp)
{
printf("%-8.8s", utbufp->ut_name);
printf(" ");
printf("%-8.8s", utbufp->ut_line);
printf(" ");
printf("%10ld", utbufp->ut_time);
printf(" ");
#ifdef SHOWHOST
printf("(%s)", utbufp->ut_host);
#endif
printf("\n");
}
------------------
保存为who1.c
以下是编译
chen@chen-notebook:~$ gcc who1.c -l who1
who1.c: 在函数‘main’中:
who1.c:15: 警告: 隐式声明与内建函数‘exit’不兼容
/usr/bin/ld: cannot find -lwho1
collect2: ld 返回 1
chen@chen-notebook:~$
------------------
问这是什么原因?
我GOOGLE半天,看到很多人都有相同问题,只-lwho1这点不一样,各种各样的解决办法,我试了很多都不行
Re: 编译出现/usr/bin/ld: cannot find -lwho1 collect2: ld 返回 1 ?????
发表于 : 2009-10-20 22:39
由 zglcx123
我自己顶一下,等答案呀!!!
Re: 编译出现/usr/bin/ld: cannot find -lwho1 collect2: ld 返回 1 ?????
发表于 : 2009-10-21 20:47
由 tusooa
代码: 全选
21/10/2009 20:50:29
tusooa (~)
>> grep 'exit (' /usr/include/stdlib.h
extern int atexit (void (*__func) (void)) __THROW __nonnull ((1));
extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
extern void exit (int __status) __THROW __attribute__ ((__noreturn__));
因此你得
代码: 全选
#include <stdlib.h>
Re: 编译出现/usr/bin/ld: cannot find -lwho1 collect2: ld 返回 1 ?????
发表于 : 2009-10-21 21:17
由 zglcx123
谢谢,我试试!!!

Re: 编译出现/usr/bin/ld: cannot find -lwho1 collect2: ld 返回 1 ?????
发表于 : 2009-10-22 21:07
由 zglcx123
今天我重新编译,居然一点问题都没有了,怪事
估计与电脑重启后有关
Re: 编译出现/usr/bin/ld: cannot find -lwho1 collect2: ld 返回 1 ?????
发表于 : 2009-10-22 23:46
由 cnkilior
编译的参数错了。
gcc who1.c -l who1
---->>>
gcc who1.c -o who1
Re: 编译出现/usr/bin/ld: cannot find -lwho1 collect2: ld 返回 1 ?
发表于 : 2011-10-29 13:58
由 xiaobai1593
我遇到了同样问题,把沉底的帖子再顶顶

Re: 编译出现/usr/bin/ld: cannot find -lwho1 collect2: ld 返回 1 ?
发表于 : 2011-10-29 19:28
由 tosail2010
cnkilior 写了:编译的参数错了。
gcc who1.c -l who1
---->>>
gcc who1.c -o who1
观察力很细致.