在osx 10.10.3中编译ucore

作者: 梅花小筑 | 来源:发表于2015-04-19 10:29 被阅读1902次

    机缘巧合,在网上发现了清华大学的操作系统mooc课程,该课程中用了清华自己改造的ucore内核。官方在github上给出了在真机上搭建开发环境的步骤,我在linux平台上可以成功搭建。但依据官方步骤,进行“brew install i386-elf-gcc"时却出现了错误,原来osx默认用的是clang编译器,而不是gcc编译器。要用homebrew安装gcc49,make时使用cc,和cxx选项来进行configure。我的configure命令如下:
    ./configure --disable-nls --target=i386-elf --disable-werror --enable-gold=yes --prefix=/usr/local/Cellar/i386-elf-binutils/2.23 CC=/usr/local/Cellar/gcc49/4.9.2_1/bin/gcc-4.9 CXX=/usr/local/Cellar/gcc49/4.9.2_1/bin/g++-4.9

    但即使使用了gcc,依然会出现错误,大致意思是在编译依赖库binutils-2.23时,该库elfcpp文件夹下的elfcpp_swap.h中找不到bswap_16的定义。我估计这是因为osx的头文件在细节上与标准linux不同的缘故导致。解决方法也很简单,解压binutils-2.23,并找到出错的文件,在文件头部末尾,即正式程序代码之前加入

    #include <libkern/OSByteOrder.h> 
    #define bswap_16(x) OSSwapInt16(x) 
    #define bswap_32(x) OSSwapInt32(x) 
    

    即可,或者删除HAVE_BYTESWAP_H条件编译部分,强制程序使用内部定义的bswap_16函数。(没有试过)
    并使用homebrew的给出的配置选项进行configure,然后进行make,并make install 。再用homebrew进行link,再安装i386-elf-gcc即可成功。

    附上官方安装步骤:
    1.install homebrew
    2.install binutils, gcc, gdb targeting i386-elf
    brew tap altkatz/homebrew-gcc_cross_compilers

    brew install i386-elf-gcc //may take an hour
    brew install i386-elf-gdb

    3. install qemu-system-i386
    brew install qemu

    相关文章

      网友评论

      • 9c50819dbd42:请问可以说得详细点吗?brew install i386-elf-gcc 这一步,多谢,我安装时遇到了Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libgold.a(workqueue-threads.o) has no symbols
        ranlib libgold.a 这一个错误,然后我google了下,发现没有找到太有用的信息,多谢了。

      本文标题:在osx 10.10.3中编译ucore

      本文链接:https://www.haomeiwen.com/subject/ereyfttx.html