CrossPlatform dev Ubutu to Pi

Hey there !
Sorry to begin with a noob question. Have tried setting up a CrossPlatform compile on Ubuntu for Raspberry Pi dev. Following these links :
https:// /plural/ofSite/commit/81672d808f3aa333c6b9c5fda365369792983b3e#diff-32f0a4873e229b5110cc199f4d4fedbeL29

www. openframeworks .cc/setup/raspberrypi/Raspberry-Pi-Cross-compiling-guide.html

I think that I have all the 32bit libraries in place, but when I try one of the example makes, I get the following lines :

I../../../libs/openFrameworks/app  -MMD -MP -MF ../../../libs/openFrameworksCompiled/lib/linuxarmv6l/obj/Release/libs/openFrameworks/types/ofParameterGroup.d -MT../../../libs/openFrameworksCompiled/lib/linuxarmv6l/obj/Release/libs/openFrameworks/types/ofParameterGroup.o -o ../../../libs/openFrameworksCompiled/lib/linuxarmv6l/obj/Release/libs/openFrameworks/types/ofParameterGroup.o -c ../../../libs/openFrameworks/types/ofParameterGroup.cpp
make[2]: /home/usr/src/raspberrypi/rpi-tools/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-g++: Command not found
make[2]: *** [../../../libs/openFrameworksCompiled/lib/linuxarmv6l/obj/Release/libs/openFrameworks/types/ofParameterGroup.o] Error 127
make[1]: *** [Release] Error 2
make[1]: Leaving directory `/home/usr/src/of_v0.8.4_linuxarmv6l_release/libs/openFrameworksCompiled/project'
make: *** [Release] Error 2

The environment should be ok and I have the three alternative 32bit libraries installed. I am stuck here.
.bashrc : lines added

    export PKG_CONFIG_PATH=$RPI_ROOT/usr/lib/arm-linux-gnueabihf/pkgconfig:$RPI_ROOT/usr/share/pkgconfig:$RPI_ROOT/usr/lib/pkgconfig
    export RPI_ROOT=${HOME}/src/raspberrypi/rpi-root
    export RPI_TOOLS=${HOME}/src/raspberrypi/rpi-tools
    export PATH=$PATH:${HOME}/bin:$RPI_TOOLS/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin 

I am running the latest Ubuntu 14.04 64bit , the latest OF lib for ARM, etc…it is all a new install.


Now moved to Unbutu 32bit and have exactly the same problem. Even re-did the pi setup…from installing ofx and running installdependencies to copying over the files from the pi to the 32bit Ubuntu install. Still can’t get this to work. Any help would be appreciated.

Still getting :src/tools/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-g++: Command not found

Should the link look like this ?: src/tools/arm-bcm2708/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-g++

arm-linux-gnueabihf-gcc -v returns the following :

Using built-in specs.
Target: arm-linux-gnueabihf
Configured with: /cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-raspbian-linux/.build/src/gcc-linaro-4.8-2014.01/configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu --target=arm-linux-gnueabihf --prefix=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-raspbian-linux/install --with-sysroot=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-raspbian-linux/install/arm-linux-gnueabihf/libc --enable-languages=c,c++,fortran --disable-multilib --enable-multiarch --with-arch=armv6 --with-tune=arm1176jz-s --with-fpu=vfp --with-float=hard --with-pkgversion='crosstool-NG linaro-1.13.1-4.8-2014.01 - Linaro GCC 2013.11' --with-bugurl= --enable-__cxa_atexit --enable-libmudflap --enable-libgomp --enable-libssp --with-gmp=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-gnueabihf/build/static --with-mpfr=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-gnueabihf/build/static --with-mpc=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-gnueabihf/build/static --with-isl=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-gnueabihf/build/static --with-cloog=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-gnueabihf/build/static --with-libelf=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-gnueabihf/build/static --enable-threads=posix --disable-libstdcxx-pch --enable-linker-build-id --enable-plugin --enable-gold --with-local-prefix=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-raspbian-linux/install/arm-linux-gnueabihf/libc --enable-c99 --enable-long-long --with-float=hard
Thread model: posix
gcc version 4.8.3 20140106 (prerelease) (crosstool-NG linaro-1.13.1-4.8-2014.01 - Linaro GCC 2013.11) 

Thanks again

I had this exact same issue some weeks ago. I think I fixed it with the instructions on

Have you run the absolute symlink fix script?

Thanks for your reply Timoteus. I have run the ./fixQualifiedLibraryPaths script in the toolchain folder and in the original download folder, but with no luck on either 32bit or 64bit install.

Just ran it again and got this :Passed valid toolchain
Adjusting the symlinks in /home/USER/src/rootfs/usr/lib to be relative
Debian multiarch dir exists, adjusting
Adjusting the symlinks in /home/USER/src/rootfs/usr/lib/arm-linux-gnueabihf to be relative

I still get the same error for both systems.

Don’t get discouraged, it is possible :slight_smile:

I am using a 64 bit ubuntu install running on a virtual machine inside windows 7. When I first installed it I had similar problems. Some things that come to mind, there is no longer a ia32-libs package in ubuntu 14.04. I think I used sudo apt-get install libc6-i386 libz32z1 lib32stdc++6 instead.

This is exactly why I try to document as much as possible the development process in a separate google docs. Easy to pull solutions for these kinds of problems…

Also the linux history command is great :smiley:

Let’s see, this is what I did according to the history command.

fresh ubuntu 14.04 install
download of 0.8.4 linux64 release
run install dependency
run install codecs
compile of

rsync -avu pi@ rpi-root/usr/
rsync -avu pi@ rpi-root/lib/
rsync -avu pi@ rpi-root/opt/
download rpi compiler and unzip to rpi-tools
download of 0.8.4 armv6 release

sudo apt-get install libc6-i386 libz321 lib32stdc++6

run fixqualifiedlibrarypaths script
/home/tt/fixQualifiedLibraryPaths /home/tt/rpi-root /home/tt/rpi-tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-g++

I don’t know if this helps at all… but maybe it gives you some ideas

And my PATH variable is /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/tt/rpi-tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

I added this in the end of the .bashrc file

Hello Timoteus, thanks again for the reply. I think I have to give up on this I am afraid. My steps look to be similar to yours except for installing codecs. I have installed, complied and changed path variables, but still get, arm-unknown-linux-gnueabihf.

I can try and test my steps on a clean ubuntu install tomorrow.

What kind of software are you developing for the pi?

Hey again Timoteus, I was hoping to use OF for installation work. I haven’t gotten anywhere yet, but I was thinking that I could use it like an extension of Puredata with PI cams taking in real-time video and filtering the feeds/streams based on traffic patterns in the building/view of the camera.

I will also try another 64bit install later today.

Just finished a complete fresh ubuntu 64bit install with exactly the same results.


received :

make[2]: /home/user/src/raspberrypi/tools/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-g++: Command not found
make[2]: *** [../../../libs/openFrameworksCompiled/lib/linuxarmv6l/obj/Release/libs/openFrameworks/video/ofGstVideoGrabber.o] Error 127
make[1]: *** [Release] Error 2
make[1]: Leaving directory `/home/user/src/raspberrypi/of_v0.8.4_linuxarmv6l_release/libs/openFrameworksCompiled/project'
make: *** [Release] Error 2

In the end a friend at worked fixed it by sim-linking the entire folder:

 (for i in arm-linux-gnueabihf-*; do target=$( echo $i | sed 's/arm-linux-gnueabihf-/arm-unknown-linux-gnueabihf-/' ); echo "$i => $target"; done)

arm-unknown-linux-gnueabihf-gdb > arm-linux-gnueabihf-gdb

Was hoping that the symlink scripts I’d run earlier would have fixed this.

Compiled the test, will test it on PI later.

here is some more tips for compiling, especially the /etc/debian file! My adventures with cross compiling for Raspberry Pi

yes!! guys, this arm-unknown issue, while can be solved by creating symlinks, can be done much simply if the /etc/debian file exists in your $RPI_ROOT (as documented in my other post).

Please let me know if anyone else can confirm my fixes are appropriate, as I’ve created the modified notes for the instructions site and can create a pull request to merge them into the official guide!

I am trying to follow the cross compiling guide and for me it is a bit unclear which scripts needs to be executed and where they are located. Could someone shed some light onto the locations of these scripts both on the pi and on the linux system?

It should be this one for when doing it on the RPi:


and when you copy stuff over from the Pi to your host, you end up with the required tools and libraries. I did also run (the ubuntu one) on the host previously, before setting up the cross compile in order for the native (ubuntu) builds to work, but I think this is probably not necessary if your sole purpose is to use the ubuntu system to do cross compiling.

hope this helps!

What finally fixed this issue for me was placing the debian_version file at $RPI_ROOT/etc/debian_version. The guide makes it sound like it should be in root of $RPI_ROOT. Same goes for the /opt/vc directory. Don’t place vc in $RPI_ROOT, but in $RPI_ROOT/opt/.

Hey bin23,
I’m currently locked at the same problem you had in December.

Unfortunately I don’t understand where to execute your command.
I mean this one:

(for i in arm-linux-gnueabihf-*; do target=$( echo $i | sed ‘s/arm-linux-gnueabihf-/arm-unknown-linux-gnueabihf-/’ ); echo “$i => $target”; done)

Could you explain me, where to execute it?
Many thanks in advance for your help!

you’re totally correct; i should fix that and make it more explicit. thanks! (and sorry it took so long to see it :-))