Hi folks,
This article describes the procedures of cross-compiling a HDF5 software library used on Boundary Nitrogen6W development board from an Ubuntu desktop virtual machine. Hearted with a Quad-Core ARM® Cortex A9 i.MX6 processor, the development board is used to test our HDF5 programs and other Fusion programs. The special steps that are needed to go through to accomplish the cross-platform compilation are described in details in the following sections.
Compilation environment
-
Host system:
-
Virtual Machine: Ubuntu 12.04 64-bit on Windows 7
-
gcc: version 4.6.3-1ubuntu5
-
Target system:
-
Development board: Boundary Nitrogen 6W
-
Compilation toolchain: armv7l-timesys-linux-gnueabi
-
Assigned DeviceIP = Your.Device.IP.Address
Compilation procedures
-
Download HDF5 source version 1.8.11 from HDF website. Note HDFPath = “/Your/Path/To/hdf5-1.8.11”.
-
Install the Timesys Nitrogen6X toolchain as directed in Wiki page. Note TimesysToolChainPath = “/Your/Path/To/timesys/nitrogen6x/toolchain/bin/”.
-
Save the following file CMakeCache.txtto the directory that HDFPath refers to and overwrite the existing file in the directory with the file to be saved.
-
Create a folder named as “arm-bin” in the HDFPath folder.
-
Start CMake-Gui and perform the following steps:
-
In the CMake-Gui window, set both the “Where is the source code:” and “Where to build the binaries:” edits to HDFPath (the red circle);
-
Change all the paths that contain “/home/precise/hdf5-1.8.11/arm-bin” to HDFPath/arm-bin (the yellow circle);
-
Change all the paths that conatain “/home/precise/timesys/nitrogen6x/toolchain/bin/armv7l-timesys-linux-gnueabi-” to TimesysToolChainPath/armv7l-timesys-linux-gnueabi-" (the green circles).
-
Repeat clicking on the Configure button until the configuring is done successfully.
-
Click on the Generate button to generate Makefile.
-
In the “/” directory of the minicom terminal, make sure there is a tmp directory; if there is none, create it.
-
In an Ubuntu terminal, change to the HDFPath directory; then run make command TWICE from the directory.
-
In the above directory, run command export DeviceIP=192.168.1.200.
-
In the same directory, run the following three commands in sequence to transfer the corresponding files to the appropriate directories on the device system:
-
sudo scp ./libhdf5.settings root@$DeviceIP:/libhdf5.settings
-
sudo scp ./arm-bin/H5detect root@$DeviceIP:/tmp
-
sudo scp ./arm-bin/H5make_libsettings root@$DeviceIP:/tmp
-
In the “/” directory of the minicom terminal, run the following two commands to generate two special C files that are to be used for building the HDF5 library:
-
./tmp/H5make_libsettings > ./tmp/H5lib_settings.c
-
./tmp/H5detect> ./tmp/H5T_init.c
-
In the HDFPath directory of the above Ubuntu terminal, run the following two commands to transfer the two C files back to the desktop system from the device system:
-
sudo scp root@$DeviceIP:/tmp/H5T_init.c./H5Tinit.c
-
sudo scp root@$DeviceIP:/tmp/H5lib_settings.c ./
-
In the HDFPath directory of the above Ubuntu terminal, run make command again until the build operations finish successfully.
-
So far the HDF5 shared library files and other created executable files are located in the “./arm-bin folder”. You can copy the library files to whichever destination places where you want to use the library from in your applications.
Any comments will be welcome.
Jason