|Index To the Series|
|1. Google Chromebook likes Crouton|
|2. Google Chromebook likes CMake|
|3. Google Chromebook likes ITK|
Now we build ITK in this ARM-based device.
Preparing the Build Environment
During the process of building CMake, we already installed the tool-chain and typical development tools, including git.
Here we use Git to clone the ITK repository.
We start with the normal command:
git clone git://www.itk.org/ITK.git
We will refer to this directory as the “SOURCE” directory.
We then create a “BINARY” directory, which is where we will build the ITK libraries and executables,
enter that binary directory and invoke “ccmake” in order to configure ITK.
We start with an empty configuration:
We hit the “c” key to configure and get the option for the specific ITK configuration defaults:
To reduce the burden of our first ITK build in the ARM processor of the Chromebook, we disable the EXAMPLES, and TESTING, and enable the use of SHARED libraries:
At this point we hit “c” to finish the configuration and then “g” to complete the generation of Makefiles, this will also quit ccmake.
We are now ready to start the build, and knowing from our previous exploration, that the Exynos processor is a dual core, we launch:
time make -j2
Then we use htop to joyously monitor the usage of the processor time.
and then we wait…
Perfect time to go and watch this TED video from Dan Ariel on What makes us feel good about our work.
Just at the time Dan Ariely’s TED talk finishes,
we get to see that ITK also finished building the basic libraries in 27 minutes.
Of course, true to “Nullius in Verba“, our next step is to verify directly whether the build was successful. Therefore we go an build a basic example from the collection of ITK examples. Here we take our old friend the MedianImageFilter.cxx example. We copy the source code in to a separate directory and use ccmake to configure it.
In the first pass, cmake complains for not finding yet the ITK build.
We retouch the CMakeLists.txt file to match our little example:
We then point it to the BINARY directory with our fresh build of ITK.
As usual, then we hit “c” to configure, and “g” to generate.
The we proceed to build, and conclude in 11 seconds:
and verify that we can run the example on an input image.
This gives us some confidence on the successful completion of the initial ITK build.
Embolden by this result we go for the full build of ITK, including Testing and Examples. To do this, we re-configure the ITK build:
We enable BUILD_EXAMPLES and BUILD_TESTING:
and also go to the Advanced mode, by hitting the “t” key (for Toggle). Then use the “/” key to search for the “SITE” variable.
Once found we put a meaningful name to the site machine:
We then finish the configuration with the “c” key, and generate the new Makefiles by hitting the “g” key.
We are now ready to relaunch the build, and we do it as a build to be sent to the ITK Dashboard:
The build starts…
and now we wait again…
and we wait….
In this instance,
we get enough time to go and read Dan Ariely’s book: “Predictably Irrational“…
Just as you are closing the book, will find that the ITK build have submitted to the Dashboard, and it only took 2,740 minutes !!
OK… that’s about two full days…
but… aren’t you happy that it gave you time to read a great book ?
and even happier to see the humble ARM processor being able to build the entire ITK system ?
Life is not perfect though:
- There is one compilation error, that is actually an internal error message from the “ld” linker.
- There are 199 warnings, that are actually only 2 warnings repeated multiple times.
They relate to the NumericTraits of complex<T>, for the case of T=char.
- and finally there are 13 failing tests (out of 2,410 tests).
All this provides ample opportunities for future generations to enjoy the experience of improving the code.
just as we learned form Dan Ariely‘s talk:
It has no value if we don’t have to put any effort into it !