LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2299|回复: 14

Linux From Scratch Version 6.3 一处潜在的bug 修正

[复制链接]
发表于 2007-10-28 13:17:56 | 显示全部楼层 |阅读模式
这个也不算是真正的bug,应该算是LFS 6.3的一个瑕疵的位置~
主要表现2006年以前的软件存在兼容问题。
原因: 是由于内核的头文件做了较大的变动使得部分函数被踢出头文件,导致软件无法正常编译使用。

位置:
http://www.linuxfromscratch.org/ ... /linux-headers.html
http://www.linuxfromscratch.org/ ... /linux-headers.html

解决办法:
将Linux-2.6.22.5 更换成 Linux-2.6.19.* 的任意版本就可以了~
做法还是按照书本上就可以了~ 步骤没有任何改变~
就是将内核头文件的版本降级,保证软件兼容~
发表于 2007-10-29 19:16:34 | 显示全部楼层
有哪些軟件因為 2.6.22.5 的 headers 而無法編譯使用?

手冊 remind 我們,系統裡的 headers 文件應該是編譯 glibc 的時候所用的 headers,見 http://www.linuxfromscratch.org/ ... apter08/kernel.html

另,如果你把 headers 降級了,道理上你的 glibc 應該要重新編譯一遍
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-30 16:43:56 | 显示全部楼层
d00m3d 兄 正解 如果 全部构建 以后再降级 确实 glibc 要重新编译~ 而在构建的时候 就降级编译的话 不需要重新构建 glibc 和 binuntils

还有出现问题的 最为突出的是vsftpd 因为源代码中有调用到 __syscall2这样的函数, 在2.6.20.* 以后的版本 都去掉这个函数 导致软件编译失败 我参看了 不少 glibc为2.51的release版本,内核头文件的版本全部都是 2.6.20.* 以前的版本
回复 支持 反对

使用道具 举报

发表于 2007-10-30 16:58:03 | 显示全部楼层
CLFS中也编译 vsftpd 也是不成功的。
2.6.20之前的没试过。
回复 支持 反对

使用道具 举报

发表于 2007-10-30 19:08:41 | 显示全部楼层
2.6.20.x 到今天為止的 2.6.23.1 相距都有一段日子,還是有軟件未跟上,是誰之過了,哈哈?

現在身邊沒有 LFS 機器,或者明天上班可以試驗一下 Debian 的補丁看看行不
回复 支持 反对

使用道具 举报

发表于 2007-10-31 19:21:15 | 显示全部楼层
[PHP]d00m3d@BlackMesa:~/BLFS-sources$ tar xf vsftpd-2.0.5.tar.gz
d00m3d@BlackMesa:~/BLFS-sources$ cd vs*
d00m3d@BlackMesa:~/BLFS-sources/vsftpd-2.0.5$ time make
gcc -c main.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c utility.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c prelogin.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c ftpcmdio.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c postlogin.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c privsock.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c tunables.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c ftpdataio.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c secbuf.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c ls.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c postprivparent.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c logging.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c str.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c netstr.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c sysstr.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c strlist.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c banner.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c filestr.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c parseconf.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c secutil.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c ascii.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c oneprocess.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c twoprocess.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c privops.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c standalone.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c hash.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c tcpwrap.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c ipaddrparse.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c access.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c features.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c readwrite.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c ssl.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c sysutil.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c sysdeputil.c -O2 -Wall -W -Wshadow  -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 ssl.o sysutil.o sysdeputil.o -Wl,-s `./vsf_findlibs.sh`

real    0m5.066s
user    0m4.666s
sys     0m0.371s
d00m3d@BlackMesa:~/BLFS-sources/vsftpd-2.0.5$ ls
AUDIT            banner.c       logging.o         privsock.c    sysstr.c
BENCHMARKS       banner.h       ls.c              privsock.h    sysstr.h
BUGS             banner.o       ls.h              privsock.o    sysstr.o
COPYING          builddefs.h    ls.o              readwrite.c   sysutil.c
COPYRIGHT        defs.h         main.c            readwrite.h   sysutil.h
Changelog        dummyinc       main.o            readwrite.o   sysutil.o
EXAMPLE          features.c     netstr.c          secbuf.c      tcpwrap.c
FAQ              features.h     netstr.h          secbuf.h      tcpwrap.h
INSTALL          features.o     netstr.o          secbuf.o      tcpwrap.o
LICENSE          filesize.h     oneprocess.c      secutil.c     tunables.c
Makefile         filestr.c      oneprocess.h      secutil.h     tunables.h
README           filestr.h      oneprocess.o      secutil.o     tunables.o
README.security  filestr.o      parseconf.c       session.h     twoprocess.c
README.ssl       ftpcmdio.c     parseconf.h       ssl.c         twoprocess.h
REFS             ftpcmdio.h     parseconf.o       ssl.h         twoprocess.o
REWARD           ftpcmdio.o     port              ssl.o         utility.c
RedHat           ftpcodes.h     postlogin.c       standalone.c  utility.h
SECURITY         ftpdataio.c    postlogin.h       standalone.h  utility.o
SIZE             ftpdataio.h    postlogin.o       standalone.o  vsf_findlibs.sh
SPEED            ftpdataio.o    postprivparent.c  str.c         vsftpd
TODO             hash.c         postprivparent.h  str.h         vsftpd.8
TUNING           hash.h         postprivparent.o  str.o         vsftpd.conf
access.c         hash.o         prelogin.c        strlist.c     vsftpd.conf.5
access.h         ipaddrparse.c  prelogin.h        strlist.h     vsftpver.h
access.o         ipaddrparse.h  prelogin.o        strlist.o     xinetd.d
ascii.c          ipaddrparse.o  privops.c         sysdeputil.c
ascii.h          logging.c      privops.h         sysdeputil.h
ascii.o          logging.h      privops.o         sysdeputil.o
d00m3d@BlackMesa:~/BLFS-sources/vsftpd-2.0.5$ uname -a
Linux PD18L 2.6.23.1 #1 SMP PREEMPT Tue Oct 30 08:58:08 HKT 2007 i686 athlon-4 i386 GNU/Linux
d00m3d@BlackMesa:~/BLFS-sources/vsftpd-2.0.5$ gcc -v
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: ../gcc-4.2.2/configure --prefix=/opt/gcc-4.2.2 --libexecdir=/usr/lib --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --enable-languages=c,c++
Thread model: posix
gcc version 4.2.2
d00m3d@BlackMesa:~/BLFS-sources/vsftpd-2.0.5$[/PHP]
没有打任何补丁,用的是 linux-2.6.21.2 内核提取的 headers,似乎没有问题啊
回复 支持 反对

使用道具 举报

发表于 2007-11-1 10:26:04 | 显示全部楼层
Post by d00m3d

没有打任何补丁,用的是 linux-2.6.21.2 内核提取的 headers,似乎没有问题啊

glibc的版本是多少?
回复 支持 反对

使用道具 举报

发表于 2007-11-1 12:43:48 | 显示全部楼层
glibc-2.6.1,正是提取 2.6.21.2 的 headers 後才升級的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-1 15:39:01 | 显示全部楼层
Post by d00m3d
[PHP]d00m3d@BlackMesa:~/BLFS-sources$ tar xf vsftpd-2.0.5.tar.gz
d00m3d@BlackMesa:~/BLFS-sources$ cd vs*
d00m3d@BlackMesa:~/BLFS-sources/vsftpd-2.0.5$ time make
gcc -c main.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c utility.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c prelogin.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c ftpcmdio.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c postlogin.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c privsock.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c tunables.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c ftpdataio.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c secbuf.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c ls.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c postprivparent.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c logging.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c str.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c netstr.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c sysstr.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c strlist.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c banner.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c filestr.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c parseconf.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c secutil.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c ascii.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c oneprocess.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c twoprocess.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c privops.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c standalone.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c hash.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c tcpwrap.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c ipaddrparse.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c access.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c features.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c readwrite.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c ssl.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c sysutil.c -O2 -Wall -W -Wshadow  -idirafter dummyinc
gcc -c sysdeputil.c -O2 -Wall -W -Wshadow  -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 ssl.o sysutil.o sysdeputil.o -Wl,-s `./vsf_findlibs.sh`

real    0m5.066s
user    0m4.666s
sys     0m0.371s
d00m3d@BlackMesa:~/BLFS-sources/vsftpd-2.0.5$ ls
AUDIT            banner.c       logging.o         privsock.c    sysstr.c
BENCHMARKS       banner.h       ls.c              privsock.h    sysstr.h
BUGS             banner.o       ls.h              privsock.o    sysstr.o
COPYING          builddefs.h    ls.o              readwrite.c   sysutil.c
COPYRIGHT        defs.h         main.c            readwrite.h   sysutil.h
Changelog        dummyinc       main.o            readwrite.o   sysutil.o
EXAMPLE          features.c     netstr.c          secbuf.c      tcpwrap.c
FAQ              features.h     netstr.h          secbuf.h      tcpwrap.h
INSTALL          features.o     netstr.o          secbuf.o      tcpwrap.o
LICENSE          filesize.h     oneprocess.c      secutil.c     tunables.c
Makefile         filestr.c      oneprocess.h      secutil.h     tunables.h
README           filestr.h      oneprocess.o      secutil.o     tunables.o
README.security  filestr.o      parseconf.c       session.h     twoprocess.c
README.ssl       ftpcmdio.c     parseconf.h       ssl.c         twoprocess.h
REFS             ftpcmdio.h     parseconf.o       ssl.h         twoprocess.o
REWARD           ftpcmdio.o     port              ssl.o         utility.c
RedHat           ftpcodes.h     postlogin.c       standalone.c  utility.h
SECURITY         ftpdataio.c    postlogin.h       standalone.h  utility.o
SIZE             ftpdataio.h    postlogin.o       standalone.o  vsf_findlibs.sh
SPEED            ftpdataio.o    postprivparent.c  str.c         vsftpd
TODO             hash.c         postprivparent.h  str.h         vsftpd.8
TUNING           hash.h         postprivparent.o  str.o         vsftpd.conf
access.c         hash.o         prelogin.c        strlist.c     vsftpd.conf.5
access.h         ipaddrparse.c  prelogin.h        strlist.h     vsftpver.h
access.o         ipaddrparse.h  prelogin.o        strlist.o     xinetd.d
ascii.c          ipaddrparse.o  privops.c         sysdeputil.c
ascii.h          logging.c      privops.h         sysdeputil.h
ascii.o          logging.h      privops.o         sysdeputil.o
d00m3d@BlackMesa:~/BLFS-sources/vsftpd-2.0.5$ uname -a
Linux PD18L 2.6.23.1 #1 SMP PREEMPT Tue Oct 30 08:58:08 HKT 2007 i686 athlon-4 i386 GNU/Linux
d00m3d@BlackMesa:~/BLFS-sources/vsftpd-2.0.5$ gcc -v
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: ../gcc-4.2.2/configure --prefix=/opt/gcc-4.2.2 --libexecdir=/usr/lib --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --enable-languages=c,c++
Thread model: posix
gcc version 4.2.2
d00m3d@BlackMesa:~/BLFS-sources/vsftpd-2.0.5$[/PHP]
没有打任何补丁,用的是 linux-2.6.21.2 内核提取的 headers,似乎没有问题啊


莫非 26.21.2 里面还保留着 __syscall2这个函数?  2.6.22 里面一定没有的~ 内核头文件现在降级使用 看来是一定的~ 许多老软件的开发没有及时跟进 或者 是说休眠了 为了能更好的使用 我个人的意见 在头文件上保守些是好的
回复 支持 反对

使用道具 举报

发表于 2007-11-1 17:01:48 | 显示全部楼层
按说用户程序是不应该包含内核头文件的。

我以前编译vsftpd也是失败,忘了kernel-header,glibc是什么版本了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表