一位读者指出了八月份 BTS 专栏中的一个错误答案,并提供了准确的答案。
针对八月刊中“Another X Question”的回复,《LJ》上的答案是错误的。以下是正确的答案。
如果你尝试使用 gcc-2.7.2 之外的任何编译器为 Intel 机器构建 2.0.x 内核,那么你只能自求多福了。它们使用了不正确的汇编结构,这些结构仅适用于 gcc 2.7.2。
出现以下形式的 X 驱动程序错误
_X11TranSocketUNIXConnect: 无法连接: errno = 111
这是一个内核错误。arch/i386/kernel/ioport.c 中的函数 sys_iopl 执行了一个曾经有效但现在已损坏的非法 hack,因为 GCC 优化得更加积极。较新的 2.1.x 内核已经有了修复程序,该修复程序也应该在 2.0.32 中有效。
我自己的建议:获取 gcc 2.7.2 或升级到 kernel 2.2.x(其中 X 是 9 或 10,或者其他版本)。
有关更多详细信息,请参见 http://egcs.cygnus.com/faq.html#linuxkernel。
Kevin Panko, chenrazee@hotmail.com