etr*_*sks 5 software-installation
我一直在尝试安装这个 FLTK 库:
sudo apt-get install libfltk1.3-dev
sudo apt-get install libx11-dev
Run Code Online (Sandbox Code Playgroud)
我创建了简单的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();
}
Run Code Online (Sandbox Code Playgroud)
并尝试使用以下方法进行编译:
g++ -o win main.cpp
Run Code Online (Sandbox Code Playgroud)
在这次失败之后,我遵循了 FLTK 附带的原始说明,看起来像这样
打开一个shell并安装一些软件:
Run Code Online (Sandbox Code Playgroud)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这两个是可选的,但强烈推荐:
Run Code Online (Sandbox Code Playgroud)sudo apt-get install libasound2-dev sudo apt-get install libxft-dev如果您打算使用 Code::Blocks IDE,也请安装它
Run Code Online (Sandbox Code Playgroud)sudo apt-get install codeblocks我喜欢使用 subversion 来安装最新的 FLTK-1.3.release:
Run Code Online (Sandbox Code Playgroud)svn co http://seriss.com/public/fltk/fltk/branches/branch-1.3/ fltk-1.3要更新到最新版本,只需进入 fltk-1.3 目录并键入
Run Code Online (Sandbox Code Playgroud)svn updateFIXME: 没有 FL_SYMBOL 字体 (- -symbol- ),字体 15 (Zapf-Dingbats)
当我尝试运行这条线时
svn co http://seriss.com/public/fltk/fltk/branches/branch-1.3/ fltk-1.3
Run Code Online (Sandbox Code Playgroud)
我被要求输入一些密码,我刚刚输入了我的 Ubuntu 用户名密码,这当然是不正确的。反正可能不应该这样做
Authentication realm: <http://seriss.com:80> Subversion repository
Run Code Online (Sandbox Code Playgroud)
所以这就是我的故事,在这里我寻求一些建议!
编辑: 这是旧的代码也不起作用
#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()
}
Run Code Online (Sandbox Code Playgroud)
这是错误:
main.cpp:1:19: fatal error: FL/Fl.h: No such file or directory
#include <FL/Fl.h>
^
compilation terminated.
Run Code Online (Sandbox Code Playgroud)
小智 8
对于在 Stroustrup 的书“编程:原则和实践”,附录 D 中寻找一种方法来处理此代码的人,标题中有一个小错误:
#include <FL/Fl.h>
#include <FL/Fl_Box.h>
#include <FL/Fl_Windows.h>
Run Code Online (Sandbox Code Playgroud)
但是在 Ubuntu 中(或者更好地说:在 Linux 中)你应该非常小心你的情况,所以你应该有
#include <FL/Fl.H>
#include <FL/Fl_Box.H>
#include <FL/Fl_Windows.H>
Run Code Online (Sandbox Code Playgroud)
要检查标题的确切名称是什么,只需查看 /usr/include/FL/
要从此文件(在本文中为 main.cpp)中获得可执行文件,只需使用
$ fltk-config --compile main.cpp
Run Code Online (Sandbox Code Playgroud)
生成可执行的 main
$ ./main
Run Code Online (Sandbox Code Playgroud)
并会显示一个简单的窗口。
顺便说一下,在 Kubuntu 14.04 上我安装了 FLTK
$ sudo apt install fltk1.3-dev
Run Code Online (Sandbox Code Playgroud)
这是 1.3.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();
}
Run Code Online (Sandbox Code Playgroud)
你需要一系列令人困惑的库和包含,假设它的名称类似于snippet.cpp编译它,如下所示:
g++ `fltk-config --cxxflags` snippet.cpp `fltk-config --libs` -lX11 -ldl -lXext -lXinerama -lXft -lfontconfig -o snippet
Run Code Online (Sandbox Code Playgroud)
关于包含路径:该fltk-config --cxxflags命令正在生成一组标志以传递给您的 gcc。如果您想查看这些标志是什么,请自行运行它。
关于链接器路径:同样,fltk-config(with --libs) 命令为链接器提供标志。
其他链接器标志字符串几乎完全是我的猜测。我尝试编译您的代码,看到一些未定义符号的错误输出,然后根据报告的函数名称(以及 man 命令的帮助)我能够猜测哪个库提供了该符号。
| 归档时间: |
|
| 查看次数: |
24869 次 |
| 最近记录: |