Type: Note
--- Intro ---
OpenRISC toolchain 環境建立
Ubuntu 建議安裝LTS(Long Term Support)版
各位看倌有興趣可參考 官方安裝說明 有較完整的安裝方式
這裡僅是給我自己的筆記
- Precompiled binaries
- Installation from source
- Installation of development versions
這3個安裝的方法, 應該是則一即可.
但 各版本仍 有些不同 我是全裝起來
再看狀況設置 PATH
還有一個 orbuild 但官方已經說很久沒更新了
所以能不能用就是各位看倌的命了XD
環境: Ubuntu-12.04.2 32bit
Ubuntu-14.04.1 32bit 目前無法成功
--- Content ---
建議使用 su 進入 root 模式
su
Precompiled binaries
這裡有 2 個版本 Latest version 和 1.0rc1
如果是用 Ubuntu 32bit 就直接載 Latest 吧
其它的參考 1.0rc1
---Latest version
cd /opt wget ftp://ocuser:ocuser@openrisc.opencores.org/toolchain/openrisc-toolchain-ocsvn-rev789.tar.bz2 tar xjf openrisc-toolchain-ocsvn-rev789.tar.bz2 openrisc_rev789
PATH 設置
export PATH=$PATH:/opt/openrisc_rev789/toolchain/bin export PATH=$PATH:/opt/openrisc_rev789/or1ksim/bin
---Download 1.0rc1
官方提供3個版本for Ubuntu x86/i686 (32-bit) (待會用wget取得這個檔案)
for CentOS-5.5 x86_64 (64-bit)
for OS X 10.6 (Snow Leopard) (Note. no C++ libraries)
P.S.記得 Ubuntu 也是載 32-bit
指令如下:
cd /opt wget ftp://ocuser:ocuser@openrisc.opencores.org/toolchain/or32-elf-1.0rc1-x86.tar.bz2 tar xjf or32-elf-1.0rc1-x86.tar.bz2 ln -s or32-elf-1.0rc1 or32-elf ln -s or1ksim-0.5.1rc1 or1ksim簡述上面的代碼:
下載 or32-elf 1.0rc1
解壓縮到 /opt
然後建立連結(應該是為了方便改版本)
至於 可不可以放在其它地方, 還沒試過
然後 資料夾底下有:
or32-elf
or1ksim 模擬用
PATH 設置
export PATH=$PATH:/opt/or32-elf/bin export PATH=$PATH:/opt/or1ksim/bin
Installation from source
先安裝必要的Libraries
apt-get -y install build-essential make gcc g++ flex bison patch \ texinfo libncurses5-dev libmpfr-dev libgmp3-dev libmpc-dev libzip-dev \ python-dev libexpat1-dev
若沒有下載 Latest version / 1.0rc1 可以參考 這篇 來完成or1ksim
若你有用其它安裝方法, 那麼 只有 or1ksim 的PATH設置是必要的
為 避免 其它版本的干擾, 只保留 or1ksim 的 PATH 設置
安裝SVN, 沒有的話
apt-get install subversion
用SVN 下載 OpenRISC toolchain 的 stable 版
在 /opt 裡 執行下列語句, 會自己產生 gnu-stable 資料夾
svn co http://opencores.org/ocsvn/openrisc/openrisc/trunk/gnu-stable
根據官方指示
最好反覆執行下述指令, 直到沒有檔案被更新為止. 我得到的版號是868.
svn update gnu-stable
安裝git, 沒有的話
apt-get install git
進到 gnu-stable 裡
用 git 取得另外2個必要的 source
uClibc 是一個面向嵌入式Linux系統的小型C標準庫
等下 build 時會指定這2個目錄, 即然都是 source 放在一起也比較方便
cd gnu-stable git clone git://git.openrisc.net/jonas/uClibc git clone git://git.openrisc.net/jonas/linux
---Building
需要的東西都準備好了
在 /opt/gnu-stable 裡 有 bld-all.sh 可以用來 build
可用 --help 來確認一下可以用的參數
./bld-all.sh --help
先建立 /opt/openrisc 資料夾
拿來放 build 出來的東西
mkdir /opt/openrisc
build all
--prefix 就是建好的東西要放哪
其它3個就是指定剛剛載下來的那些東西所在的目錄
要挺久的, 放給他跑吧, 跑完就OK了
./bld-all.sh --force --prefix /opt/openrisc --or1ksim-dir /opt/or1ksim --uclibc-dir uClibc --linux-dir linux ./bld-all.sh --force --prefix /opt/openrisc --or1ksim-dir /opt/or1ksim --no-uclibc --no-or32-linux ./bld-all.sh --force --prefix /opt/openrisc --or1ksim-dir /opt/or1ksim --uclibc-dir uClibc --linux-dir linux --no-newlib --no-or32-elf
PATH 設置
export PATH=$PATH:/opt/openrisc/bin
建好後
/opt/openrisc/bin/or32-elf-as
可以 compile assembly code to machine code, 含 Linux kernel
但他的 assembly code 不是 MIPS, 是 32-bit ORBIS32 ISA
可以參考 OpenRISC 1200 version 2 Supplementary Programmer's Reference Manual
/opt/openrisc/bin/or32-linux-as 則是指要在 linux 上面 run 的, 不含 Linux kernel
/opt/openrisc/bin/or32-elf-gcc 則可以拿來 compile C language
Installation of development versions
---Prebuilt versions
cd /opt wget ftp://ocuser:ocuser@openrisc.opencores.org/toolchain/gcc-or1k-elf-4.8.1-ubuntu-13.04-x86.tar.bz2 tar jxvf gcc-or1k-elf-4.8.1-ubuntu-13.04-x86.tar.bz2 mv gcc-or1k-elf-4.8.1-ubuntu-13.04-x86 or1k-elf-4.8.1
PATH 設置
export PATH=$PATH:/opt/or1k-elf-4.8.1/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:opt/or1k-elf-4.8.1/i686-pc-linux-gnu/or1k-elf/lib
---Newlib toolchain
git clone git://github.com/openrisc/or1k-src.git git clone git://github.com/openrisc/or1k-gcc.git mkdir bld-or1k-src mkdir bld-or1k-gcc export PATH=$PATH:/opt/or1k-toolchain/bin
Build the first set of tools
make 若產生問題 參考 這篇
cd bld-or1k-src ../or1k-src/configure --target=or1k-elf --prefix=/opt/or1k-toolchain --enable-shared \ --disable-itcl --disable-tk --disable-tcl --disable-winsup --disable-gdbtk --disable-libgui --disable-rda \ --disable-sid --disable-sim --disable-gdb --with-sysroot --disable-newlib --disable-libgloss make make install
Build gcc
cd ../bld-or1k-gcc ../or1k-gcc/configure --target=or1k-elf --prefix=/opt/or1k-toolchain --enable-languages=c \ --disable-shared --disable-libssp make make install
Build newlib and gdb (without or1ksim in this case)
cd .. rm -rf bld-or1k-src mkdir bld-or1k-src cd bld-or1k-src ../or1k-src/configure --target=or1k-elf --prefix=/opt/or1k-toolchain --enable-shared --disable-itcl \ --disable-tk --disable-tcl --disable-winsup --disable-gdbtk --disable-libgui --disable-rda --disable-sid \ --enable-sim --disable-or1ksim \ --enable-gdb --with-sysroot --enable-newlib --enable-libgloss make make install
Build gcc again, this time with newlib
cd .. rm -rf bld-or1k-gcc mkdir bld-or1k-gcc cd bld-or1k-gcc ../or1k-gcc/configure --target=or1k-elf --prefix=/opt/or1k-toolchain --enable-languages=c,c++ \ --disable-shared --disable-libssp --with-newlib make make install
Final
不管用哪個方法安裝 toolchain最後完成時, 都是有2個 PATH 設置
一個是 or1ksim, 一個是 toolchain (or32-elf-xxx)
//or1ksim export PATH=$PATH:/opt/openrisc_rev789/or1ksim/bin //latest or export PATH=$PATH:/opt/or1ksim/bin //1.0rc1 & from source //toolchain export PATH=$PATH:/opt/openrisc_rev789/toolchain/bin //latest or export PATH=$PATH:/opt/or32-elf/bin //1.0rc1 or export PATH=$PATH:/opt/openrisc/bin //from source or export PATH=$PATH:/opt/or1k-toolchain/bin //dev version
---Reference---
官方安裝說明
OpenRISC_GNU_tool_chain_troubleshooting
or1k-src/opcodes/or1k-desc.h:260:73: error: this decimal constant is unsigned only in ISO C90
OpenRISC 1200 version 2 Supplementary Programmer's Reference Manual
沒有留言:
張貼留言