Ubuntu linux编译make安装出错,非gcc故障

错误提示如下或者如图所示:
bles.o ftpdataio.o secbuf.o ls.o postprivparent.o logging.o str.o netstr.o sysstr.o strlist.o banner.o filestr.o parseconf.o secutil.o ascii.o oneprocess.o twoprocess.o privops.o standalone.o hash.o tcpwrap.o ipaddrparse.o access.o features.o readwrite.o opts.o ssl.o sslslave.o ptracesandbox.o ftppolicy.o sysutil.o sysdeputil.o -Wl,-s `./vsf_findlibs.sh`
sysdeputil.o: In function `vsf_sysdep_check_auth':
sysdeputil.c:(.text+0xf7): undefined reference to `crypt'
sysdeputil.c:(.text+0x128): undefined reference to `crypt'
collect2: ld returned 1 exit status
make: *** [vsftpd] 错误 1
如何解决?

undefined reference 是连接器的错误信息。你的系统没有 so 但是有 .h 就会这样。
或者 .so 放在了错误的位置或者编译参数有错。

不过你瞎自己编译什么,直接在线装一个 ftp 服务器程序不就行了。追问

我想自己定制一个适合我的ftp,但是不知道什么原因出现了这个错误,你能说的详细点吗,应该如何解决?

追答

这要看你怎么装的系统了。这个问题除非自己乱装,不然不应该这样。
你除了这个程序,还有哪个程序是自己编译安装的?对应的 --prefix 是什么地方?

追问

我用的是Ubuntu普通安装,在默认安装界面安装,好像在默认环境安装Ubuntu不可以选择自定义组件安装;分区是采用自己的boot 300mb、交换分区2000mb 、为了方便剩下的都给了\根目录
vsftpd的路径指定到了usr/local/vsftpd

追答

ubuntu 默认安装是不太可能让你能成功编译出 vsftp 的,应该你还装了附加的东西。

追问

我是在官方下载的最新版本的ubuntu11.04,没安装其他的,

追答

那不可能出这个问题。

ubuntu 的软件仓库里就有 vsftp ……你真折腾
--------------------
X的,看来不是你的问题,是 ubuntu 的问题,我这里也不能编译。估计是某个函数库放的地方不对。
------------------
删了源代码。
sudo apt-get build-dep vsftpd
安装编译的依赖后再重新来就行了。
应该是依赖库不全导致的,而且貌似这东西没有检测基本环境的 configure 命令,所以出了问题很扯。

ubuntu 不是 fedora\rhel ,开发库只有最基本的几个东西,编译程序很多都需要附加安装别的程序、开发支持库什么的。所以 ubuntu 用户优先选择软件库里面的现成软件,自己编译必须依赖库装全。光有一个 build-elxxxx 的那个不行的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-06
crypt 是 libcrypt 提供的,而 libcrypt 应该是glibc 提供的。 你的机器上是不是没装 glibc(或者版本太低)? 看一下 ls /lib/libcrypt.so* 是否存在
第2个回答  2011-05-06
#include<stdio.h>
相似回答