zoukankan      html  css  js  c++  java
  • 《linux 内核全然剖析》编译linux 0.12 内核 Ubuntu 64bits 环境

    我×。。

    最终好了,大概3 4个小时吧。。。各种毛刺问题。终究还是闯过来了。。

    。。

    ubuntu2@ubuntu:~/Downloads/linux-0.00-050613/linux-0.00$ make

    ld -s -x -M head.o  -o system > System.map
    dd bs=32 if=boot of=Image skip=1
    16+0 records in
    16+0 records out
    512 bytes (512 B) copied, 0.000605945 s, 845 kB/s
    dd bs=512 if=system of=Image skip=2 seek=1
    14+1 records in
    14+1 records out
    7632 bytes (7.6 kB) copied, 0.000221138 s, 34.5 MB/s

    sync


    去这里下载 linux -0.00-041217.zip或者050613的zip都行

    http://oldlinux.org/Linux.old/bochs/


    不算最痛苦的。遇到非常多问题。还好有前人帮忙,希望我的blog也能帮到别人。

    编译过程中遇到的非常多问题。以下的up都有遇到,并给出的具体解答。。。。好人啊。。

    。致敬

    http://chfj007.blog.163.com/blog/static/173145044201132523034138/


     head.s:148: Error: invalid instruction suffix for `pop' head.s:149: Error: operand type mismatch  

    会出现上面这样的非常多suffix前缀不对的指令错误提示。解决这个问题的办法非常easy。也就是32位汇编在64位的机子上跑要解决的问题

    在相相应的汇编代码的开头加个

    .code32

    OK



    相同。会遇到

    head.s:105: Warning: using `%ebx' instead of `%bx' due to `l' suffix

    这个把对应的bx寄存器改成ebx就OK

    head.s:248: Error: `%al' not allowed with `movl'
    head.s:257: Error: `%al' not allowed with `movl'
    这个把movl改成movb。这里应该是一个错误。而不是一个平台差异照成的

    由于我认为al是8bit的movl是16bit的。即使在32位平台上也是不正确的


    Over。  还是非常舒坦的。。。平安无事的编译成功了






    时间就这样慢慢的流淌,当我们还是流动的长河,当我们变成静静的湖泊


  • 相关阅读:
    软件工程课堂二
    软件工程第二周总结
    软件工程第一周开课博客
    软件工程课堂一
    开学第一次考试感想
    以Function构造函数方式声明函数
    document.scrollingElement
    标识符
    变量声明语句的提升
    用that代替this
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/7008129.html
Copyright © 2011-2022 走看看