Cross Compiling: Difference between revisions

From PS3 Developer wiki
Jump to navigation Jump to search
m (minor corrections - path)
(added how to compile the kernel and openssl)
Line 12: Line 12:
== Ubuntu/Debian ==
== Ubuntu/Debian ==


===Creating a cross compiler toolchain===


Install required packages
Install required packages
Line 42: Line 43:
</pre>
</pre>


Add the following line at the end of the file
Add the following lines at the end of the file


"export PATH="${PATH}:/home/user/crosstool/bin/"
"export PATH="${PATH}:/home/user/crosstool/bin/"
"export PATH="${PATH}:/home/user/x-tools/powerpc64-unknown-linux-gnu/bin/"




Line 96: Line 98:


More info: http://www.ibm.com/developerworks/linux/tutorials/l-embedded-distro/section3.html
More info: http://www.ibm.com/developerworks/linux/tutorials/l-embedded-distro/section3.html
===Cross compiling openssl===
Download openssl sources
<pre>
wget http://www.openssl.org/source/openssl-0.9.8g.tar.gz
</pre>
unpack the sources
<pre>
tar xvjf openssl-0.9.8g.tar.gz
</pre>
Go to openssl source path
<pre>
cd openssl-0.9.8g/
</pre>
Change the following lines in the Makefile
<pre>
INSTALLTOP=/x-tools/powerpc64-unknown-linux-gnu/powerpc64-unknown-linux-gnu/sysroot/usr
OPENSSLDIR=/x-tools/powerpc64-unknown-linux-gnu/powerpc64-unknown-linux-gnu/sysroot/usru
CC= powerpc64-unknown-linux-gnu-gcc
AR=xpowerpc64-unknown-linux-gnu-ar $(ARFLAGS) r
RANLIB= powerpc64-unknown-linux-gnu-ranlib
</pre>
Finally
<pre>
make
</pre>
===Cross compiling graf_chokolo's tools===
Make sure you have a working toolchain and openssl installed
Comment the current compiler and add your cross compiler in our case "powerpc64-unknown-linux-gnu-gcc"
<pre>
#CC=gcc
CC=powerpc64-unknown-linux-gnu-gcc
</pre>
finally
<pre>
make
</pre>
you can find graf_chokolo tools and scripts here
http://git.dukio.com/gitweb.cgi
===Compiling graf_chokolo's kernel===
Set the following environmental variables
If you haven't already
<pre>
export
</pre>
the cross compile environmental variables
<pre>
CROSS_COMPILE=powerpc64-unknown-linux-gnu-
ARCH=powerpc
</pre>
Finally
<pre>
make
</pre>

Revision as of 05:47, 18 April 2011

Cross Compiling

This page shows how to cross compile for CellBE/ppc64


Gentoo

Server: Emerge distcc crossdev & env-update & source /etc/profile & crossdev -t powerpc64-unknown-linux-gnu

Client: http://www.gentoo.org/doc/en/cross-compiling-distcc.xml (Because it's much better written than anything I could do)

Ubuntu/Debian

Creating a cross compiler toolchain

Install required packages

sudo apt-get install build-essential gawk bison flex automake libtool cvs lzma ncurses-dev texinfo patch g++ gcj

Create directories and compile crosstool

mkdir /home/user/crosstool
mkdir /home/user/kernel
mkdir -p /home/user/toolchain/powerpc
tar xvjf crosstool-ng-1.10.0.tar.bz2
cd crosstool-ng-1.10.0/
./configure --prefix=/home/user/crosstool/
make && make install
  • /home/user/crosstool-ng-1.10.0/ -> crostool-ng sources
  • /home/user/crosstool/ -> Crosstool install directory with binaries
  • /home/user/toolchain/ -> Directory where the binary will be installed
  • /home/user/toolchain/powerpc/ -> Crosstool files generated in this tutorial for powerpc
  • /home/user/toolchain/x-tools/ -> generated toolchain
  • /home/user/kernel -> Place were graf_chokolo's linux kernel tarball will be saved

Add the enviromental variable to bash

sudo gedit /etc/bash.bashrc

Add the following lines at the end of the file

"export PATH="${PATH}:/home/user/crosstool/bin/" "export PATH="${PATH}:/home/user/x-tools/powerpc64-unknown-linux-gnu/bin/"


Download graf_chokolo's kernel

cd /home/user/kernel
wget -O linux-2.6.tar.gz http://git.dukio.com/gitweb.cgi?p=linux-2.6\;a=snapshot\;h=HEAD\;sf=tgz

Copy the sample configuration file and modify it

cp /home/usr/crosstool/lib/ct-ng-1.10.0/samples/powerpc64-unknown-linux-gnu/* /home/usr/toolchain/powerpc/
cd /home/usr/toolchain/powerpc/
mv crosstool.config .config
cd /home/usr/toolchain/powerpc/
ct-ng menuconfig

I've added graf_chokolos kernel

  • Operating System -> Linux Kernel version -> custom tarball
  • Operating System -> Path to custom tarball -> /home/user/kernel/linux-2.6.tar.gz

or


Start from scratch and configure the toolchain the way you want

cd /home/user/toolchain/powerppc/
ct-ng menuconfig

Compile ppc64 toolchain

unset LD_LIBRARY_PATH LIBRARY_PATH CPATH
export LD_LIBRARY_PATH LIBRARY_PATH CPATH
ct-ng build

Wait for some time until it finishes compiling


Testing if your toolchain works properly

export PATH="${PATH}:/home/user/x-tools/powerpc64-unknown-linux-gnu/bin/"
powerpc64-unknown-linux-gnuspe-gcc test.c -o test

More info: http://www.ibm.com/developerworks/linux/tutorials/l-embedded-distro/section3.html

Cross compiling openssl

Download openssl sources

wget http://www.openssl.org/source/openssl-0.9.8g.tar.gz

unpack the sources

tar xvjf openssl-0.9.8g.tar.gz

Go to openssl source path

cd openssl-0.9.8g/

Change the following lines in the Makefile

INSTALLTOP=/x-tools/powerpc64-unknown-linux-gnu/powerpc64-unknown-linux-gnu/sysroot/usr
OPENSSLDIR=/x-tools/powerpc64-unknown-linux-gnu/powerpc64-unknown-linux-gnu/sysroot/usru
CC= powerpc64-unknown-linux-gnu-gcc
AR=xpowerpc64-unknown-linux-gnu-ar $(ARFLAGS) r
RANLIB= powerpc64-unknown-linux-gnu-ranlib

Finally

make

Cross compiling graf_chokolo's tools

Make sure you have a working toolchain and openssl installed

Comment the current compiler and add your cross compiler in our case "powerpc64-unknown-linux-gnu-gcc"

#CC=gcc
CC=powerpc64-unknown-linux-gnu-gcc

finally

make

you can find graf_chokolo tools and scripts here

http://git.dukio.com/gitweb.cgi

Compiling graf_chokolo's kernel

Set the following environmental variables

If you haven't already

export 

the cross compile environmental variables

CROSS_COMPILE=powerpc64-unknown-linux-gnu-
ARCH=powerpc

Finally

make