eureka-1.11:命令行中缺少 DSO

eureka-1.11: DSO missing from command line

我一直在尝试安装 eureka-1.11 程序(Linux 的 DooM 地图编辑器),当我 运行 make 命令时,出现错误:


user_nout@linux-u90c:~/eureka-1.11-source> sudo make  
root's password:  

g++ obj_linux/editloop.o obj_linux/e_basis.o obj_linux/e_checks.o obj_linux/e_checks2.o obj_linux/e_cutpaste.o obj_linux/e_linedef.o obj_linux/e_loadsave.o obj_linux/e_nodes.o obj_linux/e_path.o obj_linux/e_sector.o obj_linux/e_things.o obj_linux/e_vertex.o obj_linux/im_arrows.o obj_linux/im_color.o obj_linux/im_img.o obj_linux/levels.o obj_linux/lib_adler.o obj_linux/lib_file.o obj_linux/lib_util.o obj_linux/main.o obj_linux/m_bitvec.o obj_linux/m_config.o obj_linux/m_files.o obj_linux/m_game.o obj_linux/m_keys.o obj_linux/m_select.o obj_linux/m_strings.o obj_linux/objects.o obj_linux/r_grid.o obj_linux/r_render.o obj_linux/sys_debug.o obj_linux/ui_about.o obj_linux/ui_browser.o obj_linux/ui_canvas.o obj_linux/ui_default.o obj_linux/ui_dialog.o obj_linux/ui_file.o obj_linux/ui_hyper.o obj_linux/ui_infobar.o obj_linux/ui_linedef.o obj_linux/ui_menu.o obj_linux/ui_misc.o obj_linux/ui_nombre.o obj_linux/ui_nodes.o obj_linux/ui_pic.o obj_linux/ui_prefs.o obj_linux/ui_replace.o obj_linux/ui_sector.o obj_linux/ui_scroll.o obj_linux/ui_sidedef.o obj_linux/ui_thing.o obj_linux/ui_tile.o obj_linux/ui_vertex.o obj_linux/ui_window.o obj_linux/w_loadpic.o obj_linux/w_flats.o obj_linux/w_sprite.o obj_linux/w_texture.o obj_linux/w_wad.o obj_linux/x_hover.o obj_linux/x_loop.o obj_linux/x_mirror.o obj_linux/glbsp/analyze.o obj_linux/glbsp/blockmap.o obj_linux/glbsp/glbsp.o obj_linux/glbsp/level.o obj_linux/glbsp/node.o obj_linux/glbsp/reject.o obj_linux/glbsp/seg.o obj_linux/glbsp/system.o obj_linux/glbsp/util.o obj_linux/glbsp/wad.o -o eureka -L /lib64 -lfltk_images -lfltk_gl -lfltk -lX11 -lXext -lXft -lfontconfig -lXinerama -lpng -ljpeg -lGL -lz -lm
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: /usr/local/lib64/libfltk.a(Fl_Native_File_Chooser.o): undefined reference to symbol 'dlsym@@GLIBC_2.2.5'
/lib64/libdl.so.2: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:158: recipe for target 'eureka' failed
make: *** [eureka] Error 1


我搜索了很多关于此类错误的信息,但在每个主题中与我的问题相比都有所不同。

注意:没有配置文件;我还尝试将另一个 LDFLAGS 放入 make 文件中。

系统:linux openSUSE Leap 42.1

makefile部分,如有需要:


INSTALL_DIR=$(PREFIX)/share/eureka

CXXFLAGS=$(OPTIMISE) -Wall -D$(OS)  \
     -Iglbsp_src  \
     -D_THREAD_SAFE -D_REENTRANT

LDFLAGS=-L/usr/X11R6/lib

LIBS= \
 -lfltk_images -lfltk_gl -lfltk  \
 -lX11 -lXext -lXft -lfontconfig -lXinerama  \
 -lpng -ljpeg -lGL -lz -lm

有什么办法可以解决这个问题吗?

问题可以关闭 - Knud Larsen已在上面的评论中发布了答案。 所有的东西都在我的系统上无效的 fltk 中。

要阅读我的问题的完整答案,请参阅评论,正如我已经提到的那样。

感谢帮助!

使用 OpenSuse Leap 42.1 测试 eureka-111 :

# zypper in gcc-c++ fltk-devel fltk-devel-static libXft-devel libjpeg8-devel libpng12-devel xdg-utils

cd eureka-1.11-source/ && make ... 并创建可执行文件 eureka


P.S。 :与手动构建 fltk 不同的原因:Suse 42.1 fltk 包是使用不同的 configure 文件构建的(第 2685 行已编辑):

-            DSOCOMMAND="$(CXX) $(DSOFLAGS) -Wl,-soname,$@ $(LDLIBS) -shared -fPIC $DEBUGFLAG -o"
+            DSOCOMMAND="$(CXX) -Wl,--as-needed -Wl,--no-undefined $(DSOFLAGS) -Wl,-soname,$@ $(LDLIBS) -shared -fPIC $DEBUGFLAG -o"

参考。源 SRPM 中的补丁 fltk-1.3.2-underlinking.patch,fltk-1.3.2-9.2.src.rpm