Como instalar a biblioteca FLTK no ubuntu 14.04

4

Eu tenho tentado instalar esta biblioteca FLTK:

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

Eu criei main.cpp :

simples
#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();
}

e tentou compilar usando:

g++ -o win main.cpp

Após essa falha, eu segui a instrução original, o que vem com o FLTK, que se parecia com isso

  

Abra um shell e instale algum software:

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    
     

Estes dois são opcionais, mas altamente recomendados:

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

Se você planeja usar o Code :: Blocks IDE, instale também este

sudo apt-get install codeblocks
     

Eu gosto de usar o subversion para instalar o FLTK-1.3.release mais recente:

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

Para atualizar para a versão mais recente, basta acessar o fltk-1.3   diretório e digite

svn update
     

FIXME: nenhuma fonte FL_SYMBOL (- -symbol - ), fonte 15 (Zapf-Dingbats)

Quando tentei executar esta linha

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

Pediram-me uma senha e acabei de digitar minha senha do nome de usuário do Ubuntu, o que obviamente não estava correto. Provavelmente não deveria ter feito isso de qualquer maneira

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

Portanto, esta é a minha história e aqui estou pedindo alguns conselhos!

EDITAR: Aqui está o código mais antigo que também não funcionou

#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()
}

Este foi o erro:

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

2 respostas

2

Em relação à falha de compilação do gcc: Parece que você está usando um exemplo do FLTK 2.0 e tentando compilá-lo com o FLTK 1.3.

Se você for usar o 1.3, há um PDF com exemplos que são instalados em /usr/share/doc/fltk1.3-doc/fltk.pdf.gz (do pacote fltk1.3-doc ).

Em relação ao problema do svn: você está tentando entrar no svn repo de alguém, e eles precisam de um nome de usuário e senha. Você provavelmente deve alterar a senha no seu sistema local agora porque você tentou usá-la para fazer login em algum outro sistema na Internet.

Editar: agora que você atualizou seu código, o problema mudou um pouco ... Os problemas neste momento são o caminho de inclusão, os sinalizadores de vinculação e os erros de digitação.

Quando você vê uma falha em uma linha de inclusão, é porque o compilador não sabe onde procurar pelo arquivo especificado (ou não existe em seu sistema). Então você tem que adicionar o caminho de inclusão à sua instrução de compilação. Depois de passar disso, ainda será necessário especificar os sinalizadores de linker adequados para que a biblioteca que contém os objetos dos arquivos incluídos esteja disponível para o vinculador.

Você tem alguns erros no seu código:

#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();
}

E você precisa de uma série de bibliotecas e includes confusas, supondo que ele tenha o nome de algo como snippet.cpp , compile assim:

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

Em relação ao caminho de inclusão: O comando fltk-config --cxxflags está produzindo um conjunto de sinalizadores para passar para o seu gcc. Execute-o por si só se quiser ver quais são esses sinalizadores.

Em relação ao caminho do vinculador: Novamente, o comando fltk-config (com --libs ) está fornecendo os sinalizadores para o vinculador.

A cadeia de outros sinalizadores de linker foi quase um palpite completo da minha parte. Eu tentei compilar seu código, vi alguma saída de erro para símbolos indefinidos e, em seguida, com base no nome da função relatada (e com a ajuda do comando man), consegui adivinhar qual biblioteca fornecia o símbolo.

    
por Stephen 24.05.2015 / 22:11
7

Para quem procura uma maneira de fazer funcionar este código no livro de Stroustrup "Programação: Princípios e Prática", apêndice D, há um pequeno erro no cabeçalho:

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

mas no Ubuntu (ou melhor dito: no Linux) você deve ter muito cuidado com seus casos, então você deve ter

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

Para verificar qual é o nome EXATO de um cabeçalho, basta olhar em / usr / include / FL /

Para ter um executável deste arquivo (neste post, main.cpp), basta usar

$ fltk-config --compile main.cpp

que gera o executável principal

$ ./main

e uma janela simples será exibida.

A propósito, no Kubuntu 14.04 eu instalei o FLTK com

$ sudo apt install fltk1.3-dev

que é a versão 1.3.2 (novo o suficiente para minhas necessidades).

    
por GiovanniES 30.03.2016 / 21:10