如何在 ubuntu 14.04 上安装 FLTK 库

如何在 ubuntu 14.04 上安装 FLTK 库

我一直在尝试安装这个 FLTK 库:

sudo apt-get install libfltk1.3-dev
sudo apt-get install libx11-dev

我创建了简单的main.cpp

#include <fltk/Window.h>
#include <fltk/Widget.h>
#include <fltk/run.h>
using namespace fltk;

int main(int argc, char **argv) {
  Window *window = new Window(300, 180);
  window->begin();
  Widget *box = new Widget(20, 40, 260, 100, "Hello, World!");
  box->box(UP_BOX);
  box->labelfont(HELVETICA_BOLD_ITALIC);
  box->labelsize(36);
  box->labeltype(SHADOW_LABEL);
  window->end();
  window->show(argc, argv);
  return run();
}

并尝试使用以下方法进行编译:

g++ -o win main.cpp

这次失败后,我按照 FLTK 的原始说明进行操作,如下所示

打开 shell 并安装一些软件:

sudo apt-get install g++   
sudo apt-get install gdb   
sudo apt-get install subversion  
sudo apt-get install autoconf   
sudo apt-get install libx11-dev   
sudo apt-get install libglu1-mesa-dev    

这两个是可选的,但强烈推荐:

sudo apt-get install libasound2-dev   
sudo apt-get install libxft-dev

如果你打算使用 Code::Blocks IDE,也请安装此

sudo apt-get install codeblocks

我喜欢使用 subversion 来安装最新的 FLTK-1.3.release:

svn co http://seriss.com/public/fltk/fltk/branches/branch-1.3/ fltk-1.3

要更新到最新版本,只需进入 fltk-1.3 目录并输入

svn update

FIXME:没有 FL_SYMBOL 字体(--象征-), 字体 15 (Zapf-Dingbats)

当我尝试运行此行时

svn co http://seriss.com/public/fltk/fltk/branches/branch-1.3/ fltk-1.3 

我被要求输入密码,我只输入了我的 Ubuntu 用户名密码,这当然是错误的。无论如何,我可能不应该这么做

Authentication realm: <http://seriss.com:80> Subversion repository

这就是我的故事,我在这里寻求一些建议!

编辑 : 这是旧的代码,同样不起作用

#include <FL/Fl.h>
#include <FL/Fl_Box.h>
#include <Fl/Fl_Windows.h>

int main()
{
    Fl_Window window(200, 200, "Window title");
    Fl_Box box(0,0,200,200,"Hey, I mean, Hello, World!");
    window.show();
    return Fl::run()
}

这是错误:

main.cpp:1:19: fatal error: FL/Fl.h: No such file or directory
 #include <FL/Fl.h>
                   ^
compilation terminated.

答案1

对于那些想找到一种方法来编写 Stroustrup 的书“编程:原则与实践”附录 D 中的这段代码的人来说,标题中有一个小错误:

#include <FL/Fl.h>
#include <FL/Fl_Box.h>
#include <FL/Fl_Windows.h>

但在 Ubuntu 中(或者更确切地说:在 Linux 中),你应该非常小心处理你的案例,所以你应该

#include <FL/Fl.H>
#include <FL/Fl_Box.H>
#include <FL/Fl_Windows.H>

要检查标题的确切名称,只需查看 /usr/include/FL/

要从此文件(本文中为 main.cpp)获取可执行文件,只需使用

$ fltk-config --compile main.cpp

生成可执行文件 main

$ ./main

然后会显示一个简单的窗口。

顺便说一下,我在 Kubuntu 14.04 上安装了 FLTK

$ sudo apt install fltk1.3-dev

即版本 1.3.2(足够新,满足我的需要)。

答案2

关于 gcc 构建失败:看起来您正在使用 FLTK 2.0 示例并尝试使用 FLTK 1.3 进行编译。

如果您要使用 1.3,有一个包含示例的 PDF 可以安装到/usr/share/doc/fltk1.3-doc/fltk.pdf.gz(来自包fltk1.3-doc)。

关于 svn 问题:您正尝试登录某人的 svn 存储库,而他们需要用户名和密码。您现在可能应该在本地系统上更改密码,因为您刚刚尝试使用该密码登录互联网上的其他系统。


编辑:现在您已经更新了代码,问题略有变化...此时的问题是包含路径、链接器标志和拼写错误。

当您在包含行上看到失败时,这是因为编译器不知道在哪里查找指定的文件(或者它不存在于您的系统中)。因此,您必须将包含路径添加到编译指令中。完成此操作后,您仍需要指定适当的链接器标志,以便包含所包含文件对象的库可供链接器使用。

您的代码中有一些拼写错误:

#include <FL/Fl.H>
#include <FL/Fl_Box.H>
#include <Fl/Fl_Window.H>

int main()
{
    Fl_Window window(200, 200, "Window title");
    Fl_Box box(0,0,200,200,"Hey, I mean, Hello, World!");
    window.show();
    return Fl::run();
}

并且您需要一系列令人困惑的库和包含,假设它被命名为像snippet.cpp这样编译它:

g++ `fltk-config --cxxflags` snippet.cpp `fltk-config --libs` -lX11 -ldl -lXext -lXinerama -lXft -lfontconfig -o snippet

关于包含路径:该fltk-config --cxxflags命令生成一组标志以传递给您的 gcc。如果您想查看这些标志是什么,请单独运行它。

关于链接器路径:再次,fltk-config(带--libs)命令为链接器提供了标志。

其他链接器标志的字符串几乎完全是我的猜测。我尝试编译您的代码,看到一些未定义符号的错误输出,然后根据报告的函数名称(以及 man 命令的帮助),我能够猜出哪个库提供了该符号。

相关内容