Adding a toolchain
Adding a toolchain to Fuego consists of these steps:
- 1. obtain (generate or retrieve) the toolchain
- 2. copy the toolchain to the container
- 3. install the toolchain inside the container
- 4. create a -tools.sh file for the toolchain
- 5. reference the toolchain in the appropriate board file
To install a Debian cross toolchain into the container, get to the shell prompt in the container and use the following script:
To use the script, pass it the argument naming the cross-compile architecture you are using. Available values are:
Execute the script, inside the docker container, with a single command-line option to indicate the cross-toolchain to install. You can use the script more than once, if you wish to install multiple toolchains.
- # /fuego-ro/toolchains/install_cross_toolchain.sh armhf
The Debian packages for the specified toolchain will be installed into the docker container.
To build the SDK in Yocto Project, inside your yocto build directory do:
- bitbake <image-name> -c do_populate_sdk
This will build an SDK archive (containing the toolchain, header files and libraries needed for creating software on your target, and put it into the directory <build-root>/tmp/deploy/sdk/
For example, if you are building the 'core-image-minimal' image, you would execute:
With the container running, on the host machine do:
- docker ps (note the container id)
- docker cp tmp/deploy/sdk/<sdk-install-package> <container-id>:/tmp
This last command will place the SDK install package into the /tmp directory in the container.
Now, install the SDK into the container, whereever you would like. Many toolchains install themselves under /opt.
At the shell inside the container, run the SDK install script (which is a self-extracting archive):
- during the installation, select a toolchain installation location, like: /opt/poky/2.0.1
These instructions are for an SDK built by the Yocto Project. Similar instructions would apply for installing a different toolchain or SDK. That is, get the SDK into the container, then install it inside the container.
You need to determine a name for this TOOLCHAIN, and then create a file with that name, called $TOOLCHAIN-tools.sh. So, for example if you created an SDK with poky for the qemuarm image, you might call the TOOLCHAIN "poky-qemuarm". You would create a file called "poky-qemuarm-tools.sh"
The -tools.sh file is used by Fuego to define the environment variables needed to interact with the SDK. This includes things like CC, AR, and LD. The complete list of variables that this script neeeds to provide are described on the page tools.sh
Inside the -tools.sh file, you execute instructions that will set the environment variables needed to build software with that SDK. For an SDK built by the Yocto Project, this involves setting a few variables, and calling the environment-setup... script that comes with the SDK. For SDKs from other sources, you can define the needed variables by directly exporting them.
Here is an example of the tools.sh script for poky-qemuarm. This is in the sample file /fuego-ro/toolchains/poky-qemuarm-tools.sh:
Edit the board file:
- vi /fuego-ro/boards/myboard.board
And add (or edit) the line:
run_python internally to execute the container's default python interpreter, instead of the interpreter that was built by the Yocto Project.