Cross-compiling VMWare View for ARM Linux (in Debian/Ubuntu)
Earlier this month, I wrote an article about PCoIP Technology which shows an Android application (VMWare View) running on an OMAP4 Tablet displaying a Windows 7 desktop. This remote desktop technology relies on a powerful server to do the processing and thin clients (in that case Tablets) to display the desktop. Since only pixels are transferred any OS (supported by the server) could be displayed in the thin client.
That made me wonder if there was an open source PCoIP client that could run on low end Linux client such as the Raspberry Pi. VMWare View Open Client provides just what we need, but is only available in source code so we need to cross-compile it for ARM or build it in an ARM machine. Today, I’ll show the instructions I followed to cross-compile it for ARM in Debian using Emdebian Toolchain.
First download and extract VMware View Open Client 4.5 source code:
wget http://vmware-view-open-client.googlecode.com/files/VMware-view-open-client-source-4.5.0-297975.tar.gztar xzvfVMware-view-open-client-source-4.5.0-297975.tar.gzcd VMware-view-open-client-source-4.5.0-297975
Install some tools on the build machine:
sudo apt-get install intltool
and some ARM libraries and development packages:
sudo /usr/share/pdebuild-cross/xapt -a armel libicu-dev libcurl3-dev libgtk2.0-0 libboost-signals-dev
Finally, configure, build and install VMWare Open Client:
LDFLAGS="-L/usr/arm-linux-gnueabi/lib -lboost_signals" ./configure --target=arm-linux-gnueabi \ --host=arm-linux-gnueabi --prefix=/home/jaufranc/edev/vmware-client --with-boost-signals=no make make install
That’s it! VMWare View for ARM is now ready. You just need to copy the files in the installation directory to your target board.
I have tried it in my Raspberry Pi emulator and after installation some libraries (libcurl3 and libboost-signals1.42.0), vmware-view could run (Screenshot below).
So we now have VMWare View (PCoIP client) running in an ARM emulator, we should then able to “run” any OS – such as Windows 8 – in the Raspberry Pi or other low-end thin clients. Of course, this method only makes sense if you need several thin clients with one server. I have not not fully tested this with a VMWare server, but I’ll surely have a try once the Raspberry Pi board and Windows 8 Consumer Preview are released later this month.
Related posts: |















That sounds interesting.
I just found out about Raspberry pi and the first thing that came in to my mind was a pcoip client running on it.
Raspberry pi + some fullhd display + keyb + mouse would be a cheap alternative to Samsung NC240 pcoip display.
@ John U
Yes, the price and size of the Raspberry Pi open the door to all sort of applications that may not have been cost effective previously, although the total price of the Raspberry Pi is a bit higher than I expected (around 60 USD after shipping and taxes in the country I live).
I’m planning to try Windows 8 in Raspberry Pi via PCoIP once I get my board.
Hi!
It’s a very interesting subject that could be use on many products. In my case I tried so hard to cross-compil Vmware view to run on a Wyse T50, but I failed…
I hope that i will find a solution, I’m working on it…
Thanks for this instructions.
Let me know if you succeed, and if you don’t, you can always post your error message here (if any), maybe I’ll get an idea.
I’ve given up trying PCoIP for now, because the server setup seems relatively complicated and it apparently requires a paid version of VMWare vSphere.
Hi, working together with juli3n, (with your clever guidelines) and we both need a hand to setup cross-compiling platform (debian squeeze) :
checking for uidna_IDNToASCII in -licuuc… no : configure: error: libicu is required, but not found.
checked, libicu-dev & libicu-dev-armel-cross set up
Please help, you seem to know well how to set up perfectly squeeze ! is there any lack or newer package to set up ?
Thanks for your advices
@ Yann
If libicu-dev and libicu-dev-armel-cross are already installed, you’d better check config.log to see the exact error.
If by any chance, Wyse T50 is running a recent version of Ubuntu, you could also install vmware-view directly by running:
sudo apt-get install vmware-view-open-client
Of course, it exists but native PCOIP doesn’t work, only RDP (We get Remote KMS Container Error from View Server, on the other hand it works on windows thin clients). Well, here is the detailed error point :
checking for uidna_IDNToASCII in -licuuc
configure:10883: g++ -o conftest -g -O2 -DBUILT_BY_root -L/usr/arm-linux-gnueabi/lib conftest.cpp -licuuc -licudata >&5
/usr/bin/ld: skipping incompatible /usr/arm-linux-gnueabi/lib/libicuuc.so when searching for -licuuc
/usr/bin/ld: skipping incompatible /usr/arm-linux-gnueabi/lib/libicuuc.a when searching for -licuuc
/usr/bin/ld: skipping incompatible /usr/arm-linux-gnueabi/lib/libicudata.so when searching for -licudata
/usr/bin/ld: skipping incompatible /usr/arm-linux-gnueabi/lib/libicudata.a when searching for -licudata
/usr/bin/ld: skipping incompatible /usr/arm-linux-gnueabi/lib/libm.so when searching for -lm
/usr/bin/ld: skipping incompatible /usr/arm-linux-gnueabi/lib/libc.so when searching for -lc
/usr/bin/ld: skipping incompatible /usr/arm-linux-gnueabi/lib/libc.a when searching for -lc
/tmp/ccRjxS1b.o: In function `main’:
/home/user/VMware-view-open-client-source-4.5.0-297975/conftest.cpp:55: undefined reference to `uidna_IDNToASCII_48′
collect2: ld returned 1 exit status
@ Yann
It’s using g++ instead of arm-linux-gnueabi-g++
Have you install the toolchain following the instructions at http://www.cnx-software.com/2012/02/15/cross-compiling-vmware-view-for-arm-linux-in-debianubuntu/ ?
Can you verify arm-linux-gnueabi-g++ installed ?
If it is already installed, you may need to “export CXX=arm-linux-gnueabi-g++”
Hello,
I am trying to follow your ‘how to’ but when I try to run the ./configure command I get a message indicating that glib-2.0 and gmodule-2.0 are missing. Any tip on how to install them?
Thank you
@ Fernando
When packages are missing, you can find them with aptitude and install them with apt-get
http://www.cnx-software.com/2011/10/08/finding-a-missing-package-in-ubuntu-with-aptitude/
If aptitude is not installed on your system, simply run:
sudo apt-get install aptitude