Hello,
Now it is possible to run Google Earth 7.1 (checked with 7.1.2.2041 64 bit) on openSUSE 13.1, using the system’s native QT libraries instead of GE’s bundled one. This solves most of the crash problems related to the QT libraries, and also the Panoramio empty frames problem, and is pretty stable (but see the comments at the end). It also results in a great performance of GE, maybe because the bundled QT libraries are compiled for “generic” architecture instead of x86_64.
There can still be problems probably related to 3D handling in some display drivers. (In my tests I could consistently crash the 3D driver of VirtualBox 4.3.4.)
I tested it on QEMU-KVM, with an up to date openSUSE 13.1 system using Gnome and KDE. On Gnome it works perfectly. On KDE the Panoramio frames misbehave (but still usable using right click). This is so on all the distributions that I tested. I don’t know if this is a KDE or Xorg-server bug.
BTW, I already posted a similar solution (using the native QT libraries) for Fedora 19/20 and for Gentoo. On other distributions the native QT libraries are still not up to date with the needed patches, especially the one that is needed to prevent a crash on search (I tested it on Debian 7/testing/sid, AltLinux 7.0.1, Mageia 3/4, or Ubuntu 12/13/14 and latest ArchLinux). Of course this can be expected to be improved. For the said distributions for now one can use my recompiled libraries (I posted links in productforums.google.com).
I didn’t test this solution on 32bit installations.
**GE 7.1 for openSUSE 13.1 with native QT libraries HOWTO
**Notes:
The rpmrebuild can be done from your user.
The google-earth command must be invoked from your user (never superuser).
The rest of installation commands detailed below should be done from superuser.
- You need the following up to date packages installed in your system:
1A. libfreeimage3 (currently 3.15.4-3.2)
1B. libqt4-x11 (currently 4.8.5-5.6.1)
1C. libqt4 (currently 4.8.5-5.6.1)
1D. libQtWebKit4 (currently 4.8.5+2.3.3-2.6.1)
1E. libqt4-devel (can be removed after this installation, see below)
1F: gcc-c++ (can be removed after this installation, but it is a good idea to leave it…)
Note that libfreeimage3 is in the games repository. If you don’t have it (check with ‘zypper lr’), you can add it as follows:
zypper ar -f http://download.opensuse.org/repositories/games/openSUSE_13.1/ games
Install these packages as follows (some may already be installed):
zypper install libfreeimage3 libqt4-x11 libqt4 libQtWebKit4 libqt4-devel gcc-c++
- Install the GE 7.1 64 bit rpm package from Google’s download site (currently 7.1.2.2041).
zypper install google-earth-stable_current_x86_64.rpm
- In GE’s running directory /opt/google/earth/free, remove the 4 original libQt* libraries:
cd /opt/google/earth/free
mkdir bundled-qtlib
mv libQt* bundled-qtlib/
Similarly you can remove plugins/imageformats/*, but anyway they are not going to be used.
- If you invoke googleearth now, you will get the known error:
./googleearth-bin: symbol lookup error: ./libbase.so: undefined symbol: _Z34QBaAsicAtomicInt_fetchAndAddOrderedPVii
The missing function can be generated as follows:
4A. Create a file (I called it baifaao.cpp) with this content:
/* amirpli 2013/11/28 */
#include <QtCore/QAtomicInt>
extern "C" {
int _Z34QBasicAtomicInt_fetchAndAddOrderedPVii(QAtomicInt *a, int b) {
return a->fetchAndAddOrdered(b);
}
}
4B. Compile it and create the shim library with:
gcc -I/usr/include -O3 -fPIC --shared baifaao.cpp -o baifaao.so
Put baifaao.so in the directory /opt/google/earth/free .
- In the file googleearth (in the directory /opt/google/earth/free), add the following line, e.g. before the line starting with LD_LIBRARY_PATH:
export LD_PRELOAD=/usr/lib64/libfreeimage.so.3:/opt/google/earth/free/baifaao.so
- I didn’t test if the locale bug in the QT libs is patched (may cause a major coordinate shift if the locale is not en_US.UTF-8). If it is still present with your locale, add also:
export LC_NUMERIC=en_US.UTF-8
- You may remove libqt4-devel along with the ~100 packages that are installed with it (saving 100+ MB):
zypper remove -u libqt4-devel
(Similarly you can remove the gcc compilers if you must save space and don’t need them.)
- Now try running (from your user - see comment 1):
google-earth
Enjoy!
Comments:
- Don’t try to invoke googleearth as superuser (unless this is a login / su -l, but there is no point in that anyway).
Else the files GE writes in your home directory may get owned by root, and GE will then malfunction when you invoke it from your user.
- If you had a previous installation of GE, and now encounter a problem like no Panoramio icons, clear GE’s cache.
- The library preload happens also for programs invoked from GE (e.g. if you use the external browser option).
I didn’t encounter a real problem in that, but if needed it can be prevented by using a relative path for the preloaded libraries.
- I didn’t check here using the flash plugin for the YouTube layer. But I guess almost no one uses this layer now since Google removed it from the menu and the gallery.
- Clicking on Tools->Options->3D Font->Fonts->Choose 3D Font still crashes GE.
- There are still QtWebKit related crashes when clicking on pictures in “Places” icones (camera and square-inside-square icones) using the internal browser.
-
There is an annoying “selection” problem that often colors the screen. A click or mouse movement may sometimes temporarily clear it, especially if done outside this selection. A better solution is needed. (For some reason this bug doesn’t exist when my recompiled libraries are used.)