• 《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。  还是非常舒坦的。。。平安无事的编译成功了






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


  • 相关阅读:
    #20175120彭宇辰 java第五周学习总结
    结对学习创意照
    #20175120彭宇辰 java第四周总结
    《Java程序设计》第3周学习总结
    # 20175120 2018.3.10 《Java程序设计》第2周学习总结
    20175303柴轩达 信息安全系统设计基础第四周学习总结
    信息安全系统设计基础第三周学习总结
    20175303 《信息安全系统设计基础》第一周学习总结
    20175303柴轩达答辩项目代码链接整合
    团队作业(五):冲刺总结
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/7008129.html
Copyright © 2020-2023  润新知