C++ FLTK-can和x27;t使用g+编译+;

C++ FLTK-can和x27;t使用g+编译+;,c++,fltk,C++,Fltk,在Manjaro Linux上安装FLTK 1.4库之后,我使用“FLTK config-compile hello.cpp”成功编译了它 但是,似乎我不能用g++编译它: g++ hello.cpp -o hello -I/usr/local/include -L/usr/local/lib -lfltk -lXext -lX11 -lm -ldl 错误消息: /usr/bin/ld: /usr/local/lib/libfltk.a(Fl_X11_Screen_Driver.cxx.o):

在Manjaro Linux上安装FLTK 1.4库之后,我使用“FLTK config-compile hello.cpp”成功编译了它

但是,似乎我不能用g++编译它:

g++ hello.cpp -o hello -I/usr/local/include -L/usr/local/lib -lfltk -lXext -lX11 -lm -ldl
错误消息:

/usr/bin/ld: /usr/local/lib/libfltk.a(Fl_X11_Screen_Driver.cxx.o): in function `Fl_X11_Screen_Driver::init()':
/home/theo/1. Programming/2. Libraries/fltk/src/drivers/X11/Fl_X11_Screen_Driver.cxx:312: undefined reference to `XineramaIsActive'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/X11/Fl_X11_Screen_Driver.cxx:313: undefined reference to `XineramaQueryScreens'
/usr/bin/ld: /usr/local/lib/libfltk.a(Fl_x.cxx.o): in function `open_display_i(_XDisplay*)':
/home/theo/1. Programming/2. Libraries/fltk/src/Fl_x.cxx:695: undefined reference to `XFixesQueryExtension'
/usr/bin/ld: /usr/local/lib/libfltk.a(Fl_x.cxx.o): in function `xrender_supported()':
/home/theo/1. Programming/2. Libraries/fltk/src/Fl_x.cxx:2342: undefined reference to `XRenderQueryExtension'
/usr/bin/ld: /usr/local/lib/libfltk.a(Fl_x.cxx.o): in function `Fl_X::make_xid(Fl_Window*, XVisualInfo*, unsigned long)':
/home/theo/1. Programming/2. Libraries/fltk/src/Fl_x.cxx:2702: undefined reference to `XFixesSelectSelectionInput'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/Fl_x.cxx:2704: undefined reference to `XFixesSelectSelectionInput'
/usr/bin/ld: /usr/local/lib/libfltk.a(Fl_x.cxx.o): in function `Fl_X11_Window_Driver::set_cursor(Fl_RGB_Image const*, int, int)':
/home/theo/1. Programming/2. Libraries/fltk/src/Fl_x.cxx:2978: undefined reference to `XcursorImageCreate'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/Fl_x.cxx:3027: undefined reference to `XcursorImageLoadCursor'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/Fl_x.cxx:3031: undefined reference to `XcursorImageDestroy'
/usr/bin/ld: /usr/bin/ld: DWARF error: could not find variable specification at offset 43e4
/usr/bin/ld: DWARF error: could not find variable specification at offset 43f1
/usr/local/lib/libfltk.a(Fl_Xlib_Graphics_Driver_font_xft.cxx.o): in function `Fl_Xlib_Graphics_Driver::set_fonts(char const*)':
/home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:352: undefined reference to `FcInit'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:363: undefined reference to `FcPatternCreate'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:364: undefined reference to `FcObjectSetBuild'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:367: undefined reference to `FcFontList'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:370: undefined reference to `FcPatternDestroy'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:371: undefined reference to `FcObjectSetDestroy'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:393: undefined reference to `FcNameUnparse'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:439: undefined reference to `FcFontSetDestroy'
/usr/bin/ld: /usr/local/lib/libfltk.a(Fl_Xlib_Graphics_Driver_font_xft.cxx.o): in function `fontopen(char const*, double, bool, int)':
/home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:532: undefined reference to `FcPatternCreate'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:567: undefined reference to `FcPatternAddString'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:586: undefined reference to `FcPatternAddString'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:590: undefined reference to `FcPatternAddInteger'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:591: undefined reference to `FcPatternAddInteger'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:592: undefined reference to `FcPatternAddDouble'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:593: undefined reference to `FcPatternAddString'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:599: undefined reference to `FcMatrixRotate'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:600: undefined reference to `FcPatternAddMatrix'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:604: undefined reference to `FcPatternAddBool'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:605: undefined reference to `FcPatternAddBool'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:612: undefined reference to `XftFontMatch'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:649: undefined reference to `XftFontOpenPattern'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:653: undefined reference to `XftFontOpen'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:657: undefined reference to `FcPatternDestroy'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:671: undefined reference to `FcPatternDestroy'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:690: undefined reference to `XftFontOpenXlfd'
/usr/bin/ld: /usr/local/lib/libfltk.a(Fl_Xlib_Graphics_Driver_font_xft.cxx.o): in function `utf8extents(Fl_Xlib_Font_Descriptor*, char const*, int, _XGlyphInfo*)':
/home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:739: undefined reference to `XftTextExtents32'
/usr/bin/ld: /usr/local/lib/libfltk.a(Fl_Xlib_Graphics_Driver_font_xft.cxx.o): in function `fl_xft_width(Fl_Font_Descriptor*, unsigned int*, int)':
/home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:763: undefined reference to `XftTextExtents32'
/usr/bin/ld: /usr/local/lib/libfltk.a(Fl_Xlib_Graphics_Driver_font_xft.cxx.o): in function `Fl_Xlib_Graphics_Driver::draw_unscaled(char const*, int, int, int)':
/home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:809: undefined reference to `XftDrawCreate'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:812: undefined reference to `XftDrawChange'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:816: undefined reference to `XftDrawSetClip'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:832: undefined reference to `XftDrawString32'
/usr/bin/ld: /usr/local/lib/libfltk.a(Fl_Xlib_Graphics_Driver_font_xft.cxx.o): in function `Fl_Xlib_Graphics_Driver::drawUCS4(void const*, int, int, int)':
/home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:855: undefined reference to `XftDrawCreate'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:858: undefined reference to `XftDrawChange'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:862: undefined reference to `XftDrawSetClip'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:874: undefined reference to `XftDrawString32'
/usr/bin/ld: /usr/local/lib/libfltk.a(Fl_Xlib_Graphics_Driver_font_xft.cxx.o): in function `Fl_Xlib_Graphics_Driver::rtl_draw_unscaled(char const*, int, int, int)':
/home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:894: undefined reference to `FcUtf8Len'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:909: undefined reference to `FcUtf8ToUcs4'
/usr/bin/ld: /usr/local/lib/libfltk.a(Fl_Xlib_Graphics_Driver_font_xft.cxx.o): in function `Fl_Xlib_Graphics_Driver::get_font_sizes(int, int*&)':
/home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:938: undefined reference to `XftListFonts'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:952: undefined reference to `FcPatternGetDouble'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:957: undefined reference to `FcFontSetDestroy'
/usr/bin/ld: /usr/local/lib/libfltk.a(Fl_Xlib_Graphics_Driver_font_xft.cxx.o): in function `Fl_Xlib_Graphics_Driver::destroy_xft_draw(unsigned long)':
/home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx:1021: undefined reference to `XftDrawChange'
/usr/bin/ld: /usr/local/lib/libfltk.a(Fl_Xlib_Graphics_Driver_image.cxx.o): in function `Fl_Xlib_Graphics_Driver::scale_and_render_pixmap(unsigned long, int, double, double, int, int, int, int, int, int)':
/home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx:782: undefined reference to `XRenderFindStandardFormat'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx:783: undefined reference to `XRenderFindStandardFormat'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx:784: undefined reference to `XRenderFindVisualFormat'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx:785: undefined reference to `XRenderCreatePicture'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx:786: undefined reference to `XRenderCreatePicture'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx:794: undefined reference to `XRenderSetPictureClipRegion'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx:802: undefined reference to `XRenderSetPictureTransform'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx:804: undefined reference to `XRenderComposite'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx:806: undefined reference to `XRenderFreePicture'
/usr/bin/ld: /home/theo/1. Programming/2. Libraries/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx:807: undefined reference to `XRenderFreePicture'
collect2: error: ld returned 1 exit status
hello.cpp是文档中的一个:

编辑2: 还有很多东西要添加到g++命令中,因此可能不值得手动键入它们。 使用“fltk config--compiletest.cpp”似乎是最方便的方法。输出结果显示:

/usr/bin/c++ -I/usr/local/include -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_THREAD_SAFE -D_REENTRANT -o 'test' 'test.cpp' /usr/local/lib/libfltk.a -lm -lX11 -lXext -lpthread -lXinerama -lXfixes -lXcursor -lXft -lXrender -lm -lfontconfig -ldl
编辑3: 我找到了这篇文章,它解释了如何从编程原理和实践中编译第一个示例,我实际上是在尝试做什么。

编辑4: 我与FLTK团队进行了广泛的交谈,他们很友好地解释了如何安装和使用“FLTK config”脚本的不同场景,该脚本知道如何链接所有需要的lib。所以编译命令应该是这样的:

g++ -w -Wall -std=c++14 ../../Graph_lib/Graph.cpp ../../Graph_lib/Window.cpp ../../Graph_lib/GUI.cpp ../../Graph_lib/Simple_window.cpp 15_classes.cpp 15.9.cpp `/home/Dev/fltk-1.4.0/bin/fltk-config --cxxflags --ldflags --use-images` -o 15.9.bin
讨论内容如下:
警告:这是龙,但值得

您可能需要xinerama软件包。您需要获得的软件包的完整列表是

  • libglu1 mesa开发
  • 利比斯开发公司
  • libjpeg dev-这可能是libjpeg62 dev或其他数字
  • libpng dev-这可能是libpng12 dev或其他数字
  • libx11开发
  • libxcursordev
  • libxext开发
  • libxft开发
  • libxinerama dev
  • 利比亚发展
  • mesa公共开发
  • zlib1g dev-它是在b之后的一个:不是L
如果您正在运行一个较旧的版本,则可能需要在运行configure和make之前修改分发makefile

  • 查找ldlib并添加-lfontconfig-lXrender
  • 查找GLDLIBS并添加-lfontconfig-lXrender-lfreetype

否则,您将在font.o中获得对符号FcInit的未定义引用。我也得到了相同的错误,但对于我来说,通过链接下面的libs错误得到了解决。 这是完整的命令

g++helloWorld.cpp-o hello-Ifltk-1.3.6-Lfltk-1.3.6/lib-Lfltk-lX11-lXfixes-lxex-ldl-lxex-lpthread-lXinerama-lXcursor-lXft-lxrder-lm-lfontconfig


BR,

谢谢Cup,但在pacman(Arch和Manjaro Linux的软件包管理器)上,我找不到这些软件包……我没有这两个版本的Linux。让我先在虚拟机上试一试。对不起,在这方面我帮不了你。我的机器不会使用64位manjaro,32位manjaro已经过时了。所有pacman的东西都不断出现错误。请尝试将“-lxft-lxinerama”添加到构建行我得到:/usr/bin/ld:not find-lxft/usr/bin/ld:not find-lxinerama##,pacman没有找到这些xft和xinerama软件包。您是否尝试按照建议编写生成文件?在我的linux安装中,它是开箱即用的。。。抱歉,无法帮助检查我的Edit4,FLTK团队正在使用“FLTK config”脚本,该脚本知道它需要的所有库
/usr/bin/c++ -I/usr/local/include -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_THREAD_SAFE -D_REENTRANT -o 'test' 'test.cpp' /usr/local/lib/libfltk.a -lm -lX11 -lXext -lpthread -lXinerama -lXfixes -lXcursor -lXft -lXrender -lm -lfontconfig -ldl
g++ -w -Wall -std=c++14 ../../Graph_lib/Graph.cpp ../../Graph_lib/Window.cpp ../../Graph_lib/GUI.cpp ../../Graph_lib/Simple_window.cpp 15_classes.cpp 15.9.cpp `/home/Dev/fltk-1.4.0/bin/fltk-config --cxxflags --ldflags --use-images` -o 15.9.bin