2012年11月21日 星期三

google 地球 7

Read English version Here
系統: openSUSE 12.2 x86_64 使用 nvidia 專利驅動程式
$  uname -r
3.4.11-2.16-desktop
$ rpm -qa | grep nvidia
nvidia-gfxG02-kmp-desktop-304.43_k3.4.6_2.10-19.1.x86_64
nvidia-computeG02-304.43-20.1.x86_64
x11-video-nvidiaG02-304.43-20.1.x86_64

http://www.google.com/intl/zh-TW/earth/index.html下載 Google Earth
使用 zypper 安裝
# zypper in google-earth-stable_current_x86_64.rpm 
正在載入套件庫資料...
讀取已安裝的套件...
正在解決套件相依性...

將會安裝下列新的套件:
  google-earth-stable 

1  新套件將被安裝.
全部下載大小: 39.3 MiB。 完成操作後,將增加 126.0 MiB 的使用。
要繼續嗎? [y/n/?] (y): y
正在取出 套件 google-earth-stable-7.0.1.8244-0.x86_64
                                   (1/1),  39.3 MiB (已解開 126.0 MiB)
正在取出 套件 google-earth-stable-7.0.1.8244-0.x86_64
                                   (1/1),  39.3 MiB (已解開 126.0 MiB)
正在安裝: google-earth-stable-7.0.1.8244-0 ....................[完成]
其他 rpm 輸出:
warning: commands will be executed using /bin/sh
job 3 at 2012-11-21 00:23
Can't open /var/run/atd.pid to signal atd. No atd running?


在終端機執行 google-earth
$ google-earth
Google Earth has caught signal 11.



We apologize for the inconvenience, but Google Earth has crashed.
 This is a bug in the program, and should never happen under normal
 circumstances. A bug report and debugging data have been written
 to this text file:

    /home/ray122/.googleearth/crashlogs/crashlog-50abae63.txt

Please include this file if you submit a bug report to Google.


檢視偵錯資料
$ cat /home/ray122/.googleearth/crashlogs/crashlog-50abae63.txt
Major Version 7
Minor Version 0
Build Number 0001
Build Date Oct 29 2012
Build Time 19:13:39
OS Type 3
OS Major Version 3
OS Minor Version 4
OS Build Version 11
OS Patch Version 16
Crash Signal 11
Crash Time 1353428579
Up Time 0.073919

Stacktrace from glibc:
./libgoogleearth_free.so(+0x1e9cfb)[0xf7572cfb]
./libgoogleearth_free.so(+0x1e9f43)[0xf7572f43]
linux-gate.so.1(__kernel_sigreturn+0x0)[0xf771d400]


開始偵錯
$ cd /opt/google/earth/free/


$ export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH

$ gdb ./googleearth-bin
GNU gdb (GDB) SUSE (7.4.50.20120603-2.1.2)
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-suse-linux".
For bug reporting instructions, please see:
...
Reading symbols from /opt/google/earth/free/googleearth-bin...(no debugging symbols found)...done.
(gdb) r
Starting program: /opt/google/earth/free/googleearth-bin 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
0xf42fd0c8 in ?? () from /usr/lib/libexpat.so.1
Missing separate debuginfos, use: zypper install google-earth-stable-debuginfo-7.0.1.8244-0.x86_64
(gdb) bt
#0  0xf42fd0c8 in ?? () from /usr/lib/libexpat.so.1
#1  0xf42fd203 in ?? () from /usr/lib/libexpat.so.1
#2  0xf42fd23c in ?? () from /usr/lib/libexpat.so.1
#3  0xf42ffb69 in ?? () from /usr/lib/libexpat.so.1
#4  0xf4300c11 in ?? () from /usr/lib/libexpat.so.1
#5  0xf4301ab2 in ?? () from /usr/lib/libexpat.so.1
#6  0xf4305e0e in XML_ParseBuffer () from /usr/lib/libexpat.so.1
#7  0xf6fea471 in FcConfigParseAndLoad ()
   from /usr/lib/libfontconfig.so.1
#8  0xf6fea761 in FcConfigParseAndLoad ()
   from /usr/lib/libfontconfig.so.1
#9  0xf6feaa17 in ?? () from /usr/lib/libfontconfig.so.1
#10 0xf4300815 in ?? () from /usr/lib/libexpat.so.1
#11 0xf4301ab2 in ?? () from /usr/lib/libexpat.so.1
#12 0xf43036b0 in ?? () from /usr/lib/libexpat.so.1
#13 0xf4303e52 in ?? () from /usr/lib/libexpat.so.1
#14 0xf4305e0e in XML_ParseBuffer () from /usr/lib/libexpat.so.1
#15 0xf6fea471 in FcConfigParseAndLoad ()
   from /usr/lib/libfontconfig.so.1
#16 0xf6fdee46 in FcInitLoadConfig ()
   from /usr/lib/libfontconfig.so.1
#17 0xf6fdef69 in FcInitLoadConfigAndFonts ()
   from /usr/lib/libfontconfig.so.1
#18 0xf6fdf1ed in FcInit () from /usr/lib/libfontconfig.so.1
#19 0xf739202f in qt_init(QApplicationPrivate*, int, _XDisplay*, unsigned long, unsigned long) () from ./libQtGui.so.4
#20 0xf730cb2a in QApplicationPrivate::construct(_XDisplay*, unsigned long, unsigned long) () from ./libQtGui.so.4
#21 0xf730da53 in QApplication::QApplication(int&, char**, int) ()
   from ./libQtGui.so.4
#22 0xf7ec1e79 in earth::client::Application::Application(int&, char**) () from ./libgoogleearth_free.so
---Type  to continue, or q  to quit---
#23 0xf7e2e7ff in ?? () from ./libgoogleearth_free.so
#24 0xf7e2ebb9 in earthmain () from ./libgoogleearth_free.so
#25 0x0804877b in ?? ()
#26 0xf50ff3d5 in __libc_start_main () from /lib/libc.so.6
#27 0x080486c1 in ?? ()
(gdb)

我們需要一些 debuginfo 套件
請確認已啟用 debug 套件庫
#  zypper in libexpat1-debuginfo-32bit fontconfig-debuginfo-32bit

沒錯,即使是 64 位元的系統,您仍需要 32位元的套件

再次執行 gdb
$ gdb ./googleearth-bin
GNU gdb (GDB) SUSE (7.4.50.20120603-2.1.2)
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-suse-linux".
For bug reporting instructions, please see:
...
Reading symbols from /opt/google/earth/free/googleearth-bin...(no debugging symbols found)...done.
(gdb) r
Starting program: /opt/google/earth/free/googleearth-bin 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
poolGrow (pool=pool@entry=0x808e7b0) at lib/xmlparse.c:6215
6215    lib/xmlparse.c: 沒有此一檔案或目錄.
Missing separate debuginfos, use: zypper install google-earth-stable-debuginfo-7.0.1.8244-0.x86_64
(gdb) bt
#0  poolGrow (pool=pool@entry=0x808e7b0) at lib/xmlparse.c:6215
#1  0xf42fd203 in poolAppend (pool=pool@entry=0x808e7b0, enc=enc@entry=0xf4f46c00, 
    ptr=ptr@entry=0x8093383 "pixelsize\" compare=\"less_eq\">\n\t\t\t\t0\n\t\t


\n", ' ' , "\n", ' ' , "false\n", ' ' , "\n", ' ' , "    end=end@entry=0x809338c "\" compare=\"less_eq\">\n\t\t\t\t0\n\t\t\n", ' ' , "\n", ' ' , "false\n", ' ' , "\n", ' ' , "\n"...) at lib/xmlparse.c:6148
#2  0xf42fd23c in poolStoreString (pool=pool@entry=0x808e7b0, enc=enc@entry=0xf4f46c00, 
    ptr=0x8093383 "pixelsize\" compare=\"less_eq\">\n\t\t\t\t0\n\t\t\n", ' ' , "\n", ' ' , "false\n", ' ' , "\n", ' ' , "    end=0x809338c "\" compare=\"less_eq\">\n\t\t\t\t0\n\t\t\n", ' ' , "\n", ' ' , "false\n", ' ' , "\n", ' ' , "\n"...) at lib/xmlparse.c:6201
#3  0xf42ffb69 in storeAtts (parser=parser@entry=0x808e610, enc=enc@entry=0xf4f46c00, 
    attStr=0x8093377 "\n\t\t\t\t0\n\t\t\n", ' ' , "\n", ' ' , "false\n", ' ' , "\n", ' ' , "#4  0xf4300c11 in doContent (parser=parser@entry=0x808e610, startTagLevel=startTagLevel@entry=0, enc=0xf4f46c00, 
    s=0x8093377 "\n\t\t\t\t0\n\t\t\n", ' ' , "\n", ' ' , "false\n", ' ' , "\n", ' ' , "    s@entry=0x80932b8 ' ' , "Lucida Sans Typewriter\n", ' ' , "Lucida Sans\n", ' ' , "Lucida Bright\n", ' ' , "\n\t\t#5  0xf4301ab2 in contentProcessor (parser=0x808e610, 
    start=0x80932b8 ' ' , "Lucida Sans Typewriter\n", ' ' , "Lucida Sans\n", ' ' , "Lucida Bright\n", ' ' , "\n\t\t#6  0xf4305e0e in XML_ParseBuffer (parser=parser@entry=0x808e610, len=len@entry=2812, isFinal=isFinal@entry=0) at lib/xmlparse.c:1651
#7  0xf6fea471 in IA__FcConfigParseAndLoad (config=config@entry=0x8080b50, name=0x808e3b0 "/etc/fonts/conf.d/11-suse-hinting.conf", complain=complain@entry=0) at fcxml.c:2782
#8  0xf6fea761 in FcConfigParseAndLoadDir (complain=0, dir=0x8084f30 "/etc/fonts/conf.d", name=0xffffb99c "conf.d", config=0x8080b50) at fcxml.c:2668
#9  IA__FcConfigParseAndLoad (config=0x8080b50, name=name@entry=0xffffb99c "conf.d", complain=0) at fcxml.c:2718
#10 0xf6feaa17 in FcParseInclude (parse=0xffffb8c0) at fcxml.c:1849
#11 FcEndElement (userData=0xffffb8c0, name=0x80807a8 "include") at fcxml.c:2387
#12 0xf4300815 in doContent (parser=parser@entry=0x8080f20, startTagLevel=startTagLevel@entry=0, enc=0xf4f46c00, 
    s=0x808218e "\n\n\n\n\t/var/cache/fontconfig\n\t~/.fontconfig\n\n\t\n\n\n\n\n\n\n<!--\n\tDO NOT EDIT THIS FILE.\n\tIT WILL BE REPLACED WHEN "..., end=0x8082f00 "", nextPtr=0x8080f38) at lib/xmlparse.c:3739
#16 0xf4305e0e in XML_ParseBuffer (parser=parser@entry=0x8080f20, len=len@entry=5320, isFinal=isFinal@entry=0) at lib/xmlparse.c:1651
#17 0xf6fea471 in IA__FcConfigParseAndLoad (config=config@entry=0x8080b50, name=name@entry=0x0, complain=complain@entry=1) at fcxml.c:2782
#18 0xf6fdee46 in IA__FcInitLoadConfig () at fcinit.c:67
#19 0xf6fdef69 in IA__FcInitLoadConfigAndFonts () at fcinit.c:101
#20 0xf6fdf1ed in IA__FcInit () at fcinit.c:124
#21 0xf739202f in qt_init(QApplicationPrivate*, int, _XDisplay*, unsigned long, unsigned long) () from ./libQtGui.so.4
#22 0xf730cb2a in QApplicationPrivate::construct(_XDisplay*, unsigned long, unsigned long) () from ./libQtGui.so.4
#23 0xf730da53 in QApplication::QApplication(int&, char**, int) () from ./libQtGui.so.4
#24 0xf7ec1e79 in earth::client::Application::Application(int&, char**) () from ./libgoogleearth_free.so
#25 0xf7e2e7ff in ?? () from ./libgoogleearth_free.so
#26 0xf7e2ebb9 in earthmain () from ./libgoogleearth_free.so
---Type  to continue, or q  to quit---
#27 0x0804877b in ?? ()
#28 0xf50ff3d5 in __libc_start_main () from /lib/libc.so.6
#29 0x080486c1 in ?? ()
(gdb)

您可以看見某些 fonconfig 的設定造成了程式區段記憶體錯誤
在 #7 ...   "/etc/fonts/conf.d/11-suse-hinting.conf"
請移除檔案 /etc/fonts/conf.d/11-suse-hinting.conf
# rm  /etc/fonts/conf.d/11-suse-hinting.conf

再次執行 gdb 您也可以發現 /etc/fonts/conf.d/65-fonts-persian.conf 也需要刪除
# rm  /etc/fonts/conf.d/65-fonts-persian.conf

繼續偵錯直到 google-earth 正確啟動

螢幕抓圖:
啟動:
 
 Panoramio 相片:

 街景:

飛行模擬模式:

瀏覽星空:

3D 建築:


字體看起來不錯,不再需要取代 libQT*
非拉丁字元也可以正確顯示

也有些問題待解決:
1. 有些圖片看不見

2. 幾乎所有跳出視窗中的連結都沒辦法按一下就連結到目標
您必須在連結上按右鍵,選擇 "open in new window" 以連結到目標

3. flash 無法運作
4. 有時會崩潰...

沒有留言: