2015-01-14 20 views
2

倍頻3.8.2產生上裝載這樣的錯誤:倍頻找不到FLTK XGetUtf8FontAndGlyph符號

error: /usr/lib64/octave/3.8.2/oct/x86_64-pc-linux-gnu/PKG_ADD: /usr/lib64/octave/3.8.2/oct/x86_64-pc-linux-gnu/__init_fltk__.oct: failed to load: /usr/lib64/fltk/libfltk_gl.so.1.3: undefined symbol: XGetUtf8FontAndGlyph 
error: called from: 
error: /usr/lib64/octave/3.8.2/oct/x86_64-pc-linux-gnu/PKG_ADD at line 6, column 1 
GNU Octave, version 3.8.2 

我獲得關於圖形庫

octave:1> octave_config_info().GRAPHICS_LIBS 
ans = -L/usr/lib64/fltk -Wl,-rpath,/usr/lib64/fltk -Wl,-O1 -Wl,--sort-common -Wl,--as-needed -lfltk_gl -lGLU -lGL -lfltk -lXcursor -lXfixes -lXext -ldl -lm -lX11 

雖然沒有圖形工具包是顯然的配置的以下信息最初加載,

octave:2> available_graphics_toolkits 
ans = {}(1x0) 

我可以隨後註冊他們,

octave:3> register_graphics_toolkit("gnuplot") 
octave:4> available_graphics_toolkits 
ans = 
{ 
    [1,1] = gnuplot 
} 
octave:5> register_graphics_toolkit("fltk") 
octave:6> available_graphics_toolkits 
ans = 
{ 
    [1,1] = fltk 
    [1,2] = gnuplot 
} 

而是試圖加載FLTK產生與最初的警告

octave:7> graphics_toolkit("fltk") 
error: feval: /usr/lib64/octave/3.8.2/oct/x86_64-pc-linux-gnu/__init_fltk__.oct: failed to load: /usr/lib64/fltk/libfltk_gl.so.1.3: undefined symbol: XGetUtf8FontAndGlyph 
error: called from: 
error: /usr/share/octave/3.8.2/m/plot/util/graphics_toolkit.m at line 74, column 5 

當然試圖繪製什麼也沒有,並且,

octave:8> plot(1:10) 
error: feval: /usr/lib64/octave/3.8.2/oct/x86_64-pc-linux-gnu/__init_fltk__.oct: failed to  load: /usr/lib64/fltk/libfltk_gl.so.1.3: undefined symbol: XGetUtf8FontAndGlyph 
error: called from: 
error: /usr/share/octave/3.8.2/m/plot/util/graphics_toolkit.m at line 74, column 5 
error: failed to load fltk graphics toolkit 
error: base_graphics_toolkit::initialize: invalid graphics toolkit 
error: /usr/share/octave/3.8.2/m/plot/util/figure.m at line 94, column 9 
error: /usr/share/octave/3.8.2/m/plot/util/gcf.m at line 63, column 9 
error: /usr/share/octave/3.8.2/m/plot/util/newplot.m at line 113, column 8 
error: /usr/share/octave/3.8.2/m/plot/draw/plot.m at line 219, column 9 

兩個八度一致的錯誤和FLTK被編譯源自gentoo:

x11-libs/fltk-1.3.3-r2:1 USE="opengl -cairo -debug -doc -examples -games -pdf -static-libs -threads -xft -xinerama" 
sci-mathematics/octave-3.8.2:0/3.8.2 USE="X doc glpk gnuplot gui imagemagick opengl qhull qrupdate readline sparse zlib -curl -fftw -hdf5 -java -jit -postscript -static-libs" 

導致的(對於FLTK庫)配置開關:

./configure --prefix=/usr --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib --includedir=/usr/include/fltk --libdir=/usr/lib64/fltk --docdir=/usr/share/doc/fltk-1.3.3-r2/html --enable-largefile --enable-shared --enable-xdbe --disable-localjpeg --disable-localpng --disable-localzlib --disable-debug --disable-cairo --enable-gl --disable-threads --disable-xft --disable-xinerama 

和(對於八度)

./configure --prefix=/usr --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib --libdir=/usr/lib64 --disable-silent-rules --disable-dependency-tracking --docdir=/usr/share/doc/octave-3.8.2 --enable-shared --disable-static --localstatedir=/var/state/octave --with-blas=-L/usr/lib64/blas/reference -lblas --with-lapack=-llapack -L/usr/lib64/blas/reference -lblas --enable-docs --disable-java --enable-gui --disable-jit --enable-readline --without-curl --without-fftw3 --without-fftw3f --disable-fftw-threads --with-glpk --without-hdf5 --with-opengl --with-qhull --with-qrupdate --with-arpack --with-umfpack --with-colamd --with-ccolamd --with-cholmod --with-cxsparse --with-x --with-z --with-magick=GraphicsMagick 

如果我檢查與納米libfltk_gl.so.1.3,我看到下列符號導出:

$ nm -D /usr/lib64/fltk/libfltk_gl.so.1.3 
       U XCreateColormap 
       U XGetUtf8FontAndGlyph 
       w _ITM_deregisterTMCloneTable 
       w _ITM_registerTMCloneTable 
       w _Jv_RegisterClasses 
       U _Z10fl_measurePKcRiS1_i 
000000000000e170 T _Z10gl_descentv 
000000000000e590 T _Z10gl_measurePKcRiS1_ 
... <snip> 

根據納米手冊,û指定該符號是全局的(外部)但未衆所周知。我的問題是,這個未知的符號狀態是否是從八度音程報告的錯誤的起源,這表明問題在於如何編譯fltk,或者八度音編譯是否有問題。

編輯:解決通過啓用Xft支持:請參閱下面的評論,我再次感謝Andy的幫助。

回答

3

XGetUtf8FontAndGlyph應該在libfltk.so.1.3中。

nm -D /usr/lib/x86_64-linux-gnu/libfltk.so.1.3 |grep XGetU 
00000000000c2fc0 T XGetUtf8FontAndGlyph 

這很可能是您的配置標誌fltk而不是GNU Octave的問題。首先嚐試使用默認設置。

您可以測試OpenGL的UTF8內容是否適合「立方體」測試。只需要進入fltk源目錄測試:

cd fltk-1.3.3/test 
make cube && ./cube 

GL窗口左下方的文本是否顯示出來?

+0

非常感謝您的快速回答和見解,我將編譯fltk源文件和報告結果... // rolf – Rolf

+0

Andy-我編譯了fltk源文件,並使用默認配置(即使用'./configure') ,並且從多維數據集測試程序獲得實時輸出方面取得了成功,文本顯示出來。 – Rolf

+1

來自plainjane配置的結果是[here](https://copy.com/OoFPtua83Z4yHvnA)。但是,如果使用'./configure --enable-gl --enable-shared'配置,所得到的'./src/libfltk.so.1.3'庫缺少任何導出的'XGetUtf8FontAndGlyph'符號;或者,配置和使用原始文章中描述的附加開關,同時給出相同的立方體輸出(使用字體),生成一個庫,該庫還缺少*提及的'XGetUtf8FontAndGlyph'符號。你碰巧知道你的'libfltk.so.1.3'是如何編譯的?謝謝 - – Rolf

0

有類似的問題。在收到以下錯誤試圖運行倍頻(undefined symbol: _ZN18Fl_XFont_On_Demand5valueEv):

bash-4.3$ octave 
error: /usr/local/lib/octave/4.0.2/oct/i686-pc-linux-gnu/PKG_ADD: /usr/local/lib/octave/4.0.2/oct/i686-pc-linux-gnu/__init_fltk__.oct: failed to load: /usr/lib/libfltk_gl.so.1.3: undefined symbol: _ZN18Fl_XFont_On_Demand5valueEv 
error: called from 
    /usr/local/lib/octave/4.0.2/oct/i686-pc-linux-gnu/PKG_ADD at line 3 column 1 

命令nm -D /usr/lib/libfltk_gl.so.1.3表明符號_ZN18Fl_XFont_On_Demand5valueEv未定義(與U):

0000a3d4 T _ZN14Fl_Glut_WindowD1Ev 
0000a3d4 T _ZN14Fl_Glut_WindowD2Ev 
     U _ZN18Fl_Font_DescriptorD1Ev 
     U _ZN18Fl_Graphics_Driver11clip_regionEP8_XRegion 
     U _ZN18Fl_XFont_On_Demand5valueEv 

解決的辦法是申請中提到一個補丁文件here添加到FLTK-1.3.3源目錄中的某些文件中,然後重新編譯並重新安裝FLTK。現在八度音適用於FLTK,沒有任何問題。