Questão Como eu uso as bibliotecas de desenvolvimento do GTK + no Ubuntu?


Eu tenho programado há cerca de um ano e meio no Windows e comecei a me acostumar com a maneira como as coisas funcionam nessa plataforma, mas agora estou interessado em desenvolvimento no Linux e tenho tido dificuldades se acostumando com o fluxo de trabalho, falta de IDE e compilação de linha de comando com o GCC. Estou correndo Xubuntu 13.10 64bit, a propósito ..

Para testar as águas, fiz o que muitas pessoas fazem e escrevi um programa rápido de 'hello world' em C ++.

#include <iostream>

int main()
{
    std::cout << "Hello!\n";
    return 0;
}

Meu primeiro problema é; Este programa parece ter um erro de compilação quando eu tento compilá-lo usando o GCC, mas ele compila bem quando eu uso o compilador G ++:

gcc hello.cpp -o hello
/tmp/ccbmUmzf.o: In function `main':
hello.cpp:(.text+0xa): undefined reference to `std::cout'
hello.cpp:(.text+0xf): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/tmp/ccbmUmzf.o: In function `__static_initialization_and_destruction_0(int, int)':
hello.cpp:(.text+0x3d): undefined reference to `std::ios_base::Init::Init()'
hello.cpp:(.text+0x4c): undefined reference to `std::ios_base::Init::~Init()'
collect2: error: ld returned 1 exit status

O que está acontecendo aqui, o GCC está deixando de reconhecer que meu código é C ++ ou algo assim?

Meu segundo problema é tentar usar bibliotecas: fiquei com a impressão de que as bibliotecas de desenvolvimento do GTK + 3.0 vêm incluídas no (X) ubuntu, mas quando eu tento seguir o tutorial simples Aqui, eu recebo o seguinte erro do G + +:

g++ hello.cpp -o hello
hello.cpp:1:21: fatal error: gtk/gtk.h: No such file or directory
 #include <gtk/gtk.h>
                     ^
compilation terminated.

Então, eu interpretei isso como significando que as bibliotecas para o GTK + 3.0 não estão instaladas .. Então eu verifiquei o apt-get, e eu realmente não vi nada que se parecesse com o que eu precisava .. Eu tenho que construir o GTK? +3,0 da fonte, ou há algum PPA em algum lugar que eu preciso?

Essas questões são realmente frustrantes para mim. Eu sei que muitas pessoas juram pelo fluxo de trabalho de desenvolvimento GNU / Linux, mas como alguém que está acostumado a trabalhar no Visual Studio, estou achando o processo um pouco opaco e não intuitivo. Agora eu estou usando o Mousepad no Xubuntu para editar meu código, e embora ele tenha uma sintaxe colorida, parece fazer muito pouco além disso. Eu sei que eventualmente terei que lidar com vários arquivos e criar makefiles e, neste momento, estou com medo disso!

Qualquer ajuda que você possa dar a um programador novato e ao noob total do Linux / GNU é muito bem vinda!


4
2017-12-06 04:50


origem




Respostas:


Conselho

Primeiro de tudo, você não precisa se contentar com nenhum IDE. Instale o Eclipse, está disponível no Ubuntu Software Center. Você também deseja instalar o CDT para o Eclipse, que oferece suporte a C / C ++. Segundo eu muito aconselho você a se concentrar em C ++ e Qt em vez de C e GTK. O Qt é um ótimo framework multi-plataforma que usa C ++ e QML (uma linguagem parecida com JavaScript para UI), e o Ubuntu está se movendo cada vez mais em direção ao uso de Qt para seu futuro desenvolvimento móvel e de desktop. Essas ferramentas permitem que você não apenas crie aplicativos bonitos para o desktop Ubuntu, mas também para Android, Windows, Mac, BlackBerry e outros sistemas operacionais. Um excelente IDE específico do Qt é o QtCreator, também disponível no Ubuntu Software Center, você deve checar alguns tutoriais do Qt.

Responda

Para responder à sua pergunta diretamente, mesmo que eu recomende fortemente fazer o que descrevi acima, você provavelmente precisará das versões -dev das bibliotecas que você usa. Para o GTK 3, você provavelmente precisará:

sudo apt-get install libgtk-3-dev

Isso deve te dar todos os cabeçalhos do GTK 3.


4
2017-12-06 05:06



Eu admito, estou ciente do Qt, e tomei a decisão de testar o GTK + de forma arbitrária! Meu raciocínio foi, como um usuário do Xubuntu, eu pensei que o GTK já poderia ter sido instalado por ser uma dependência do XFCE (a menos que eu esteja enganado). Além disso, enquanto o GTK é uma biblioteca C, ele também não funciona com programas C ++? Eu não quero que isso se torne uma guerra entre o GTK e o Qt, tenho certeza que ambos são ótimos, mas neste momento eu estou apenas tentando escolher um e fazê-lo funcionar! - Além disso, a sugestão do Eclipse é algo a considerar, com certeza ..:] - MrKatSwordfish
Veja minha edição. O GTK é uma dependência, mas para os aplicativos funcionarem, apenas a parte binária é necessária. O que você precisa para compilar são os cabeçalhos, que vêm em um pacote separado - geralmente o nome da biblioteca com -dev no final. Tive a sensação de que você fez a escolha da sua pergunta de maneira arbitrária, e é por isso que me permiti dar-lhe uma direção. Você pode usar GTK com C ++, mas você tem que usar outra biblioteca, a menos que você queira lidar com um monte de C feio dentro de C ++. Eu acho que é o seu GTKmm. Dito isso, o Qt é muito mais portátil, é escrito em C ++ e tem uma ótima linguagem para interfaces de usuário. - Nicolay Doytchev
Eu diria - tente algumas coisas simples de interface do usuário em ambos e faça a sua decisão, avaliando a possível reutilização de código que você pode fazer entre plataformas com qualquer um deles. Definitivamente tente QtCreator. - Nicolay Doytchev
Instalando o libgtk-3-dev funcionou como um encanto, obrigado! Claro que seria tão simples assim; as bibliotecas de tempo de execução estavam lá, mas não os cabeçalhos, eu vejo. Ainda achando difícil encontrar o que eu preciso (e o que eu já instalei) usando o APT, mas isso é uma questão para outra hora .. Eu li muitas coisas boas sobre o Qt, e eu definitivamente vou tentar também ! Obrigado pela resposta simples e eficaz E o conselho / opinião honesta, lightrush! - MrKatSwordfish
Além disso, você não teria a menor idéia de por que eu tive esse problema com GCC vs G ++ no topo da minha pergunta, você faria? Eu estou supondo que tem algo a ver com a biblioteca padrão C ++ não ser incluído corretamente quando executado através do GCC, mas eu não tenho certeza .. Alguma idéia? - MrKatSwordfish