分类: LINUX
2009-03-29 11:44:06
以前scratchbox是可以正常使用的,可是今天出现了下面的问题
$/scratchbox/login
Inconsistency detected by ld.so: rtld.c: 1192: dl_main: Assertion `(void *) ph->p_vaddr == _rtld_local._dl_sysinfo_dso’ failed!
You dont have active target in scratchbox chroot.
Please create one by running "sb-menu" before continuing
Welcome to Scratchbox, the cross-compilation toolkit!
Use ’sb-menu’ to change your compilation target.
See /scratchbox/doc/ for documentation.
Inconsistency detected by ld.so: rtld.c: 1192: dl_main: Assertion `(void *) ph->p_vaddr == _rtld_local._dl_sysinfo_dso’ failed!
Inconsistency detected by ld.so: rtld.c: 1192: dl_main: Assertion `(void *) ph->p_vaddr == _rtld_local._dl_sysinfo_dso’ failed!
Inconsistency detected by ld.so: rtld.c: 1192: dl_main: Assertion `(void *) ph->p_vaddr == _rtld_local._dl_sysinfo_dso’ failed!
重新装了scratchbox也还是不行
以为是更新了内核的原因,于是下了一个老的RT内核,2.27.3
还是上面的错误
google了一下
发现
有讲到
However some Linux distributions have interesting issues:
vdso (Virtual Dynamic Shared Object)
Most modern kernels (at least Fedora core and Debian lenny) seem to have this option on. It breaks Scratchbox. You cannot even install SB with this option on.
Solution (64-bit kernels): add "vdso32=0" to kernel boot command line
Solution (32-bit Fedora 7, Debian lenny and newer): echo 0 >/proc/sys/vm/vdso_enabled
Solution (32-bit older): echo 0 > /proc/sys/kernel/vdso
这里
With 64-bit kernels (e.g. a Debian kernel built for amd64 architecture), VDSO can only be disabled for 32-bit applications, but that is all that is needed for Scratchbox.
This can only be specified using a kernel boot command line option:
vdso32=0
There is no way to dynamically disable VDSO after boot with a 64-bit kernel.
64位的不能在启动之后动态的disable VDSO,只能在boot command line加一句vdso32=0
重启,再来,终于是login到Scratchbox