cnhnln 发表于 2003-4-22 12:00:25

编译内核时/usr/include下的asm、linux、s

确保/usr/include/目录下的asm、linux和scsi等链接是指向要升级的内核源代码的。它们分别链向源代码目录下的真正的、该计算机体系结构(对于PC机来说,使用的体系结构是i386)所需要的真正的include子目录。如:asm指向/usr/src/linux/include/asm-i386等。若没有这些链接,就需要手工创建,按照下面的步骤进行:



# cd /usr/include/

# rm -r asm linux scsi

# ln -s /usr/src/linux/include/asm-i386 asm

# ln -s /usr/src/linux/include/linux linux

# ln -s /usr/src/linux/include/scsi scsi



??这是配置非常重要的一部分。删除掉/usr/include下的asm、linux和scsi链接后,再创建新的链接指向新内核源代码目录下的同名的目录。这些头文件目录包含着保证内核在系统上正确编译所需要的重要的头文件。


我一直这样没做过,但是编译内核都很好。看内核的安装文档也没有这样说。这样做有什么意思呀?

hit007 发表于 2003-4-24 09:44:47

我至少知道一点
ln -s /usr/src/linux/include/linux linux
的用处

编译内核模块的时候要求的系统文件需要和/src/linux/include下的文件版本相同,但是一般来说gcc用的是/usr/include里面的文件,所以可能会产生版本冲突,我就是这个问题搞了半天,你可以看看我发的那个贴---内核模块编译问题,最后解决的方法就差不多这样

cnhnln 发表于 2003-4-24 20:13:00

多谢了

cnhnln 发表于 2003-4-24 22:53:44

联接后[root@localhost linux-2.5.68]# make xconfig
make -f scripts/Makefile.build obj=scripts
gcc -Wp,-MD,scripts/.fixdep.d -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer    -o scripts/fixdep scripts/fixdep.c
gcc -Wp,-MD,scripts/.split-include.d -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer    -o scripts/split-include scripts/split-include.c
In file included from /usr/include/linux/errno.h:4,
               from /usr/include/bits/errno.h:25,
               from /usr/include/errno.h:36,
               from scripts/split-include.c:26:
/usr/include/asm/errno.h:4:31: asm-generic/errno.h: 没有那个文件或目录
make[1]: *** [scripts/split-include] Error 1
make: *** [scripts] Error 2


为什么?asm是什么?

Dragonfly 发表于 2003-4-24 23:00:36

我至少知道一点
ln -s /usr/src/linux/include/linux linux
的用处

编译内核模块的时候要求的系统文件需要和/src/linux/include下的文件版本相同,但是一般来说gcc用的是/usr/include里面的文件,所以可能会产生版本冲突,我就是这个问题搞了半天,你可以看看我发的那个贴---内核模块编译问题,最后解决的方法就差不多这样

no, i never link it.
u use -I option to explicitly include it.

wsm 发表于 2003-4-25 13:29:06

千万不要照着书抄啊 你看看你的include目录下面有什么子目录再说
如果你只是缩减自己当前的内核 不要修改这些连接 如果你需要从新的代码目录里编译 一般来说(你不会傻到用新的代码去覆盖原来放代码的目录吧)

QQme 发表于 2003-5-1 07:36:07

这几行我编译的时候也没加,一直不知道是什么意思。

按wsm的意思:
『如果你只是缩减自己当前的内核 不要修改这些连接 如果你需要从新的代码目录里编译 一般来说(你不会傻到用新的代码去覆盖原来放代码的目录吧)』

意思是不是
1)如果只是缩减内核,重新编译一次源代码,就不用这几行。
2)如果是升级内核版本就要加这几行。

Dragonfly 发表于 2003-5-1 08:08:50

cnhnln, can u tell us where u find the claim u referenced, i never do that and never have problem. so i really want to know why.
thx

hit007 发表于 2003-5-1 09:16:04

cheungming是对的
就是那个/usr/include/linux和/usr/src/linux/include是完全两个目录,前一个是用来编译一般用户级程序包含头文件用的,后一个是用来修改内核代码是用的,完全是两种用途,不要做这样的连接。

Dragonfly 发表于 2003-5-1 09:26:47

i believe the gcc on linux use the /usr/include for user application and it has correct definition in asm subdir. it is for x86.
if u want to use headers for other arch, u cross compile toolchain will use other headers.

cnhnln 发表于 2003-5-3 12:08:05

我也忘记哪里找的了. :mrgreen:
很多地方都看见过

suninchina 发表于 2003-5-3 23:41:26

Re: 编译内核时/usr/include下的asm、linux、s

确保/usr/include/目录下的asm、linux和scsi等链接是指向要升级的内核源代码的。它们分别链向源代码目录下的真正的、该计算机体系结构(对于PC机来说,使用的体系结构是i386)所需要的真正的include子目录。如:asm指向/usr/src/linux/include/asm-i386等。若没有这些链接,就需要手工创建,按照下面的步骤进行:



# cd /usr/include/

# rm -r asm linux scsi

# ln -s /usr/src/linux/include/asm-i386 asm

# ln -s /usr/src/linux/include/linux linux

# ln -s /usr/src/linux/include/scsi scsi



??这是配置非常重要的一部分。删除掉/usr/include下的asm、linux和scsi链接后,再创建新的链接指向新内核源代码目录下的同名的目录。这些头文件目录包含着保证内核在系统上正确编译所需要的重要的头文件。


我一直这样没做过,但是编译内核都很好。看内核的安装文档也没有这样说。这样做有什么意思呀?
一般都要copy一份后再编吧么不想我们这些初级着万一搞错就晚拉。您给讲一下具体过程吧。

cnhnln 发表于 2003-5-4 00:25:31

呵呵,备份的确重要

不用做这几个连接。我没做,编译正常

Dragonfly 发表于 2003-5-4 01:12:07

我也忘记哪里找的了. :mrgreen:
很多地方都看见过

ic, thx anyway.

aven 发表于 2003-5-4 02:01:52

/usr/src/下怎么会没有linux这个目录,有linux-2.4.20 ,就是没有liunx这个目录,

在make bzlmg都是不行
页: [1] 2
查看完整版本: 编译内核时/usr/include下的asm、linux、s