编译出现/usr/bin/ld: cannot find -lwho1 collect2: ld 返回 1 ?????

软件和网站开发以及相关技术探讨
回复
头像
zglcx123
帖子: 110
注册时间: 2007-08-20 16:34
来自: Earth

编译出现/usr/bin/ld: cannot find -lwho1 collect2: ld 返回 1 ?????

#1

帖子 zglcx123 » 2009-10-20 16:44

代码: 全选

/*
照《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, &current_record, reclen) == reclen)
		show_info(&current_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这点不一样,各种各样的解决办法,我试了很多都不行
Dropbox!点我注册,你的起点高了500M,我也能多得到500M,共赢!
--------
HP V3808TU (2008.03.08---2012.10.08)
ASUS N56VZ (2012.10.08---未来)
头像
zglcx123
帖子: 110
注册时间: 2007-08-20 16:34
来自: Earth

Re: 编译出现/usr/bin/ld: cannot find -lwho1 collect2: ld 返回 1 ?????

#2

帖子 zglcx123 » 2009-10-20 22:39

我自己顶一下,等答案呀!!!
Dropbox!点我注册,你的起点高了500M,我也能多得到500M,共赢!
--------
HP V3808TU (2008.03.08---2012.10.08)
ASUS N56VZ (2012.10.08---未来)
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: 编译出现/usr/bin/ld: cannot find -lwho1 collect2: ld 返回 1 ?????

#3

帖子 tusooa » 2009-10-21 20:47

代码: 全选

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>

代码: 全选

] ls -ld //
头像
zglcx123
帖子: 110
注册时间: 2007-08-20 16:34
来自: Earth

Re: 编译出现/usr/bin/ld: cannot find -lwho1 collect2: ld 返回 1 ?????

#4

帖子 zglcx123 » 2009-10-21 21:17

谢谢,我试试!!! :em05
Dropbox!点我注册,你的起点高了500M,我也能多得到500M,共赢!
--------
HP V3808TU (2008.03.08---2012.10.08)
ASUS N56VZ (2012.10.08---未来)
头像
zglcx123
帖子: 110
注册时间: 2007-08-20 16:34
来自: Earth

Re: 编译出现/usr/bin/ld: cannot find -lwho1 collect2: ld 返回 1 ?????

#5

帖子 zglcx123 » 2009-10-22 21:07

今天我重新编译,居然一点问题都没有了,怪事
估计与电脑重启后有关
Dropbox!点我注册,你的起点高了500M,我也能多得到500M,共赢!
--------
HP V3808TU (2008.03.08---2012.10.08)
ASUS N56VZ (2012.10.08---未来)
头像
cnkilior
论坛版主
帖子: 4984
注册时间: 2007-08-05 17:40

Re: 编译出现/usr/bin/ld: cannot find -lwho1 collect2: ld 返回 1 ?????

#6

帖子 cnkilior » 2009-10-22 23:46

编译的参数错了。

gcc who1.c -l who1
---->>>
gcc who1.c -o who1
xiaobai1593
帖子: 4
注册时间: 2011-10-10 15:05

Re: 编译出现/usr/bin/ld: cannot find -lwho1 collect2: ld 返回 1 ?

#7

帖子 xiaobai1593 » 2011-10-29 13:58

我遇到了同样问题,把沉底的帖子再顶顶 :em04
头像
tosail2010
帖子: 83
注册时间: 2011-03-27 19:01
联系:

Re: 编译出现/usr/bin/ld: cannot find -lwho1 collect2: ld 返回 1 ?

#8

帖子 tosail2010 » 2011-10-29 19:28

cnkilior 写了:编译的参数错了。

gcc who1.c -l who1
---->>>
gcc who1.c -o who1
观察力很细致.
A year's plan starts with spring.
回复