1 环境配置
移植之前先得有代码,所以先从龙芯组的SVN上CO了一份代码,在我们组的X86_64机器上开始倒腾。
在$TOOLROOT下直接make,不过,问了一下需要在osprey下编译,接着make,仍然不过
提示信息:
C++ /home/cmchen/OPEN_64/lgcc/osprey/targia32_loongson/libinstr2/../../instrumentation/libinstr2/dump.cxx
sh: mips64el-st-linux-gnu-g++: command not found
缺少了mips的tool,从龙芯组拷来了STLSR22的binary,在.bashrc里添加了新的路径。这里需要注意的是由于mips64el-st-linux-gnu-g++等可执行文件和cc1,ld,as等在同一个文件夹,如果想用本地的gcc的话,则需要他们挪到其他文件夹下。
接下来顺利make, make install。
实际测试,运行了一个小程序,出错,提示信息:
/home/cmchen/OPEN_64/lgcc/loongson-linux/lib/as: /lib/libc.so.6: version `GLIBC_2.8' not found (required by /home/cmchen/OPEN_64/lgcc/loongson-linux/lib/as)
/home/cmchen/OPEN_64/lgcc/loongson-linux/lib/as: /lib/libc.so.6: version `GLIBC_2.7' not found (required by /home/cmchen/OPEN_64/lgcc/loongson-linux/lib/as)
由于open64自带的as支持的是x86的指令,与MIPS后端不一致,因此用STLSR22中的mips64el-st-linux-gnu-as替换掉loongson-linux/lib中的as,可解决此问题。