Editing Cross Compiling

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 18: Line 18:
To know how many cores you have available use :
To know how many cores you have available use :


{{keyboard|content=<syntaxhighlight lang="bash">grep -c '^processor' /proc/cpuinfo</syntaxhighlight>}}
{{keyboard|content=grep -c '^processor' /proc/cpuinfo}}


This will be used later on while building the toolchain ct-ng build.#number of cores and while compiling export CONCURRENCY_LEVEL=#number of cores.
This will be used later on while building the toolchain ct-ng build.#number of cores and while compiling export CONCURRENCY_LEVEL=#number of cores.
Line 24: Line 24:
Example for a quadcore system :
Example for a quadcore system :


{{keyboard|content=<syntaxhighlight lang="bash">
{{keyboard|content=ct-ng build.4
ct-ng build.4
CONCURRENCY_LEVEL=4}}
CONCURRENCY_LEVEL=4
</syntaxhighlight>}}




Line 33: Line 31:


Install required packages :
Install required packages :
{{keyboard|content=<syntaxhighlight lang="bash">sudo apt-get install build-essential gawk bison flex automake libtool cvs lzma ncurses-dev texinfo patch g++ gcj mercurial git-core</syntaxhighlight>}}
{{keyboard|content=sudo apt-get install build-essential gawk bison flex automake libtool cvs lzma ncurses-dev texinfo patch g++ gcj mercurial git-core}}


Add the enviromental variable to bash :
Add the enviromental variable to bash :
{{keyboard|content=<syntaxhighlight lang="bash">sudo vi /etc/bash.bashrc</syntaxhighlight>}}
{{keyboard|content=sudo vi /etc/bash.bashrc}}
or
or
{{keyboard|content=<syntaxhighlight lang="bash">vi /home/user/.bashrc</syntaxhighlight>}}
{{keyboard|content=vi /home/user/.bashrc}}




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


{{keyboard|content=<syntaxhighlight lang="bash">
{{keyboard|content=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/"
export PATH="${PATH}:/home/user/x-tools/powerpc64-unknown-linux-gnu/bin/"
export CONCURRENCY_LEVEL=#number
export CONCURRENCY_LEVEL=#number}}
</syntaxhighlight>}}




Create directories and compile crosstool :
Create directories and compile crosstool :


{{keyboard|content=<syntaxhighlight lang="bash">
{{keyboard|content=mkdir /home/user/crosstool
mkdir /home/user/crosstool
mkdir /home/user/kernel
mkdir /home/user/kernel
mkdir -p /home/user/toolchain/powerpc
mkdir -p /home/user/toolchain/powerpc
Line 59: Line 54:
cd crosstool-ng
cd crosstool-ng
./configure --prefix=/home/user/crosstool
./configure --prefix=/home/user/crosstool
make && make install
make && make install}}
</syntaxhighlight>}}


* /home/user/crosstool-ng/ -> '''crosstool-ng sources'''
* /home/user/crosstool-ng/ -> '''crosstool-ng sources'''
Line 98: Line 92:
Go to that directory and apply the patch :
Go to that directory and apply the patch :


{{keyboard|content=<syntaxhighlight lang="bash">
{{keyboard|content=cd /home/user/crosstool/lib/ct-ng-yourcrosstoolversion/scripts/build
cd /home/user/crosstool/lib/ct-ng-yourcrosstoolversion/scripts/build
patch < important.patch}}
patch < important.patch
</syntaxhighlight>}}


===Creating a cross compiler toolchain for ppc64===
===Creating a cross compiler toolchain for ppc64===
Line 107: Line 99:
Download graf_chokolo's kernel :
Download graf_chokolo's kernel :


{{keyboard|content=<syntaxhighlight lang="bash">
{{keyboard|content=cd /home/user/kernel
cd /home/user/kernel
git clone git://git.gitbrew.org/ps3/ps3linux/linux-2.6.git
git clone git://git.gitbrew.org/ps3/ps3linux/linux-2.6.git
tar -zcvf linux-2.6.tar.gz linux-2.6/
tar -zcvf linux-2.6.tar.gz linux-2.6/}}
</syntaxhighlight>}}


Copy the sample configuration file and modify it :
Copy the sample configuration file and modify it :


{{keyboard|content=<syntaxhighlight lang="bash">
{{keyboard|content=cp /home/user/crosstool/lib/ct-ng-yourcrosstoolversion/samples/powerpc64-unknown-linux-gnu/* /home/user/toolchain/powerpc/
cp /home/user/crosstool/lib/ct-ng-yourcrosstoolversion/samples/powerpc64-unknown-linux-gnu/* /home/user/toolchain/powerpc/
cd /home/user/toolchain/powerpc/
cd /home/user/toolchain/powerpc/
mv crosstool.config .config
mv crosstool.config .config
cd /home/user/toolchain/powerpc/
cd /home/user/toolchain/powerpc/
ct-ng menuconfig
ct-ng menuconfig}}
</syntaxhighlight>}}


I've added graf_chokolos kernel :
I've added graf_chokolos kernel :
Line 133: Line 121:
Start from scratch and configure the toolchain the way you want :
Start from scratch and configure the toolchain the way you want :


{{keyboard|content=<syntaxhighlight lang="bash">
{{keyboard|content=cd /home/user/toolchain/powerppc/
cd /home/user/toolchain/powerppc/
ct-ng menuconfig}}
ct-ng menuconfig
</syntaxhighlight>}}


Compile ppc64 toolchain :
Compile ppc64 toolchain :


{{keyboard|content=<syntaxhighlight lang="bash">
{{keyboard|content=unset LD_LIBRARY_PATH LIBRARY_PATH CPATH
unset LD_LIBRARY_PATH LIBRARY_PATH CPATH
export LD_LIBRARY_PATH LIBRARY_PATH CPATH
export LD_LIBRARY_PATH LIBRARY_PATH CPATH
ct-ng build.#number
ct-ng build.#number}}
</syntaxhighlight>}}


'''Wait for some time until it finishes compiling'''
'''Wait for some time until it finishes compiling'''
Line 151: Line 135:
===Testing if your toolchain works properly===
===Testing if your toolchain works properly===


{{keyboard|content=<syntaxhighlight lang="bash">
{{keyboard|content=
export PATH="${PATH}:/home/user/x-tools/powerpc64-unknown-linux-gnu/bin/"
export PATH="${PATH}:/home/user/x-tools/powerpc64-unknown-linux-gnu/bin/"
powerpc64-unknown-linux-gnuspe-gcc test.c -o test
powerpc64-unknown-linux-gnuspe-gcc test.c -o test}}
</syntaxhighlight>}}


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
Line 161: Line 144:


Download openssl sources
Download openssl sources
{{keyboard|content=<syntaxhighlight lang="bash">wget http://www.openssl.org/source/openssl-0.9.8g.tar.gz</syntaxhighlight>}}
{{keyboard|content=wget http://www.openssl.org/source/openssl-0.9.8g.tar.gz}}


unpack the sources :
unpack the sources :
{{keyboard|content=<syntaxhighlight lang="bash">tar -zxvf openssl-0.9.8g.tar.gz</syntaxhighlight>}}
{{keyboard|content=tar -zxvf openssl-0.9.8g.tar.gz}}


Go to openssl source path :
Go to openssl source path :
{{keyboard|content=<syntaxhighlight lang="bash">cd openssl-0.9.8g/</syntaxhighlight>}}
{{keyboard|content=cd openssl-0.9.8g/}}


Change the following lines in the Makefile :
Change the following lines in the Makefile :
Line 180: Line 163:


Finally :
Finally :
{{keyboard|content=<syntaxhighlight lang="bash">make</syntaxhighlight>}}
{{keyboard|content=make}}




Line 196: Line 179:
Finally :
Finally :


{{keyboard|content=<syntaxhighlight lang="bash">make</syntaxhighlight>}}
{{keyboard|content=make}}


You can find graf_chokolo tools and scripts here :
You can find graf_chokolo tools and scripts here :
Line 205: Line 188:


Go to the directory where you saved your kernel, untar it and go to the kernel source directory :
Go to the directory where you saved your kernel, untar it and go to the kernel source directory :
{{keyboard|content=<syntaxhighlight lang="bash">
{{keyboard|content=cd /home/user/kernel
cd /home/user/kernel
tar xfvz linux-2.6.tar.gz
tar xfvz linux-2.6.tar.gz
cd linux-2.6
cd linux-2.6}}
</syntaxhighlight>}}


It is a good measure to clean the source directory :
It is a good measure to clean the source directory :
{{keyboard|content=<syntaxhighlight lang="bash">
{{keyboard|content=make clean
make clean
make-kpkg clean}}
make-kpkg clean
</syntaxhighlight>}}


Export set ARCH=powerpc
Export set ARCH=powerpc
And set the right number of concurrent jobs to be done this is used to improve the building time :
And set the right number of concurrent jobs to be done this is used to improve the building time :


{{keyboard|content=<syntaxhighlight lang="bash">
{{keyboard|content=export ARCH=powerpc
export ARCH=powerpc
export CONCURRENCY_LEVEL=4}}
export CONCURRENCY_LEVEL=4
 
</syntaxhighlight>}}


Use graf_chokolo config file :
Use graf_chokolo config file :
{{keyboard|content=<syntaxhighlight lang="bash">
{{keyboard|content=cp ps3_linux_config .config
cp ps3_linux_config .config
make oldconfig}}
make oldconfig
</syntaxhighlight>}}


You can customize your by using make menuconfig.
You can customize your by using make menuconfig.
Line 235: Line 211:
Now lets compile and package our kernel :
Now lets compile and package our kernel :


{{keyboard|content=<syntaxhighlight lang="bash">make-kpkg --arch=powerpc --cross-compile=powerpc64-unknown-linux-gnu- --rootcmd=fakeroot --initrd --append-to-version=-graf kernel_image kernel_source kernel_headers</syntaxhighlight>}}
{{keyboard|content=make-kpkg --arch=powerpc --cross-compile=powerpc64-unknown-linux-gnu- --rootcmd=fakeroot --initrd --append-to-version=-graf kernel_image kernel_source kernel_headers}}




Please note that all contributions to PS3 Developer wiki are considered to be released under the GNU Free Documentation License 1.2 (see PS3 Developer wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)