View Single Post
  #60  
Old 29th November 2013, 06:31 PM
amirpli Offline
Registered User
 
Join Date: Nov 2013
Location: Israel
Posts: 2
Solution for most crashes and also for blank Panoramio

Hello,
Several months ago I posted in productforums.google.com a solution for the frequent crashes and blank Panoramio frames for GE 7.1.1/7.1.2 x86_64 (and later added such a solution for several more Linux distributions), based on a recompilation of a newer version of the QT libraries.

Of course many users hesitate to install libraries that are not from official sources, so I found another solution. It works well on an up to date Fedora 19, using the native system libraries.

On Gnome the Panoramio pictures work perfectly. On KDE you can see them, but the frame misbehaves (but still usable using right click). This is a general problem with KDE on several distributions that I checked. On Xfce it is OK (checked on AltLinux 7 with recompiled QT libraries).

I didn't test this solution on 32bit installations. Maybe someone can test and post the results.

Here is how to do it:

1. You need the following up to date packages installed in your system:
1A. freeimage (currently freeimage-3.10.0-15.fc19.x86_64)
1B. qt-x11 (currently qt-x11-4.8.5-10.fc19.x86_64)
1C. qt (currently qt-4.8.5-10.fc19.x86_64)
1D. qtwebkit (currently qtwebkit-2.3.3-1.fc19.x86_64)
1E. qt-devel (temporarily for a shim library creation - can be removed afterwards)

2. Install GE's RPM after deleting the /usr/bin dependency using rpmrebuild (see message #27).

3. In GE's running directory /opt/google/earth/free, remove all the original libQt* libraries (4 ones).

4. If you try to run google-earth now, you will get:
./googleearth-bin: symbol lookup error: ./libbase.so: undefined symbol: _Z34QBasicAtomicInt_fetchAndAddOrderedPVii

The missing function can be generated as follows:

4A. Create a file (I called it baifaao.cpp) with this content:
Code:
/* 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:
Code:
gcc -O3 -fPIC --shared baifaao.cpp -o baifaao.so
Put baifaao.so in /opt/google/earth/free .

5. In the file googleearth (in /opt/google/earth/free), add the following line before the line staring with LD_LIBRARY_PATH (note the \ at the end - there should be no blanks after it).

Code:
LD_PRELOAD=/usr/lib64/libfreeimage.so.3:./baifaao.so \
Enjoy!
Reply With Quote