Chinaunix首页 | 论坛 | 博客
  • 博客访问: 64000
  • 博文数量: 10
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 143
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-20 21:24
个人简介

学习是一种修行

文章分类

全部博文(10)

文章存档

2014年(2)

2013年(8)

我的朋友

分类: C/C++

2013-12-27 16:25:02

       问及毕业后毕业后工作方向,菜鸟是做不了drivers和kernel是干不了的。于是就去问大神,大神叫我去分析下vsftpd源码。于是下了个源码,说到源码,昨天官网竟然进不去,后来度了度,可以在ftp://vsftpd.beasts.org/users/cevans/untar/下载,具体命令

 wget  -r   ftp://vsftpd.beasts.org/users/cevans/untar/vsftpd-3.0.2/*  ,

在这之前先在当前目录建一个文件夹,进入,在下载,否则会下到当前目录,很混乱。
     下载到的是文件夹,不用解压,直接进入vsftpd-3.0.2,然后 执行 make  ,发现一打的错误:
gcc   -o vsftpd main.o utility.o prelogin.o ftpcmdio.o postlogin.o privsock.o tunables.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:在函数‘vsf_sysdep_has_capabilities’中:
sysdeputil.c:(.text+0x1da):对‘cap_get_proc’未定义的引用
sysdeputil.c:(.text+0x1e5):对‘cap_free’未定义的引用
sysdeputil.o:在函数‘vsf_sysdep_adopt_capabilities’中:
sysdeputil.c:(.text+0x219):对‘cap_init’未定义的引用
sysdeputil.c:(.text+0x22f):对‘cap_set_proc’未定义的引用
sysdeputil.c:(.text+0x245):对‘cap_free’未定义的引用
sysdeputil.c:(.text+0x26e):对‘cap_set_flag’未定义的引用
sysdeputil.c:(.text+0x28b):对‘cap_set_flag’未定义的引用
sysdeputil.c:(.text+0x2b6):对‘cap_set_flag’未定义的引用
sysdeputil.c:(.text+0x2d3):对‘cap_set_flag’未定义的引用
sysdeputil.o:在函数‘vsf_sysdep_check_auth’中:
sysdeputil.c:(.text+0xc43):对‘pam_start’未定义的引用
sysdeputil.c:(.text+0xc78):对‘pam_set_item’未定义的引用
sysdeputil.c:(.text+0xc96):对‘pam_set_item’未定义的引用
sysdeputil.c:(.text+0xcba):对‘pam_set_item’未定义的引用
sysdeputil.c:(.text+0xcd0):对‘pam_authenticate’未定义的引用
sysdeputil.c:(.text+0xcee):对‘pam_get_item’未定义的引用
sysdeputil.c:(.text+0xd0d):对‘pam_acct_mgmt’未定义的引用
sysdeputil.c:(.text+0xd22):对‘pam_setcred’未定义的引用
sysdeputil.c:(.text+0xd49):对‘pam_open_session’未定义的引用
sysdeputil.c:(.text+0xd7a):对‘pam_end’未定义的引用
sysdeputil.c:(.text+0xd8d):对‘pam_end’未定义的引用
sysdeputil.c:(.text+0xdb8):对‘pam_setcred’未定义的引用

解决的办法是,看有没安装
openssl,没有就安装,执行
sudo apt-get install openssl 
sudo apt-get install libssl-dev
执行
make
 还是不行
执行

 chmod +x  vsf_findlibs.sh
./vsf_findlibs.sh

看输出什么,对应脚本vsf_findlibs.sh找到错误的地方,然后在Makefile中的LDFLAG 后面加入就行,
我的版本是vsftpd-3.0.2,根据脚本提示,修改Makefile中的那一行为  

LDFLAGS =  -lcrypt,-lcap, -fPIE -pie -Wl,-z,relro -Wl,-z,now-lcrypt,-lcap, -fPIE -pie -Wl,-z,relro -Wl,-z,now

make

输出信息:
gcc  -c sysdeputil.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -Werror -Wformat-security -D_FORTIFY_SOURCE=2  -idirafter dummyinc
gcc  -c seccompsandbox.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -Werror -Wformat-security -D_FORTIFY_SOURCE=2  -idirafter dummyinc
gcc  -o vsftpd main.o utility.o prelogin.o ftpcmdio.o postlogin.o privsock.o tunables.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 seccompsandbox.o -Wl,-s -lcrypt -lcap -fPIE -pie -Wl,-z,relro -Wl,-z,now `./vsf_findlibs.sh`

ok,累了,明天开始分析源码...........

参考:大神,互联网
阅读(3610) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:内核初始化:init/mainc之trap_init

给主人留下些什么吧!~~