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,可解決此問題。