Вопрос Как использовать библиотеки разработки GTK + в Ubuntu?


Я программировал около полутора лет в Windows, и я только начал привыкать к тому, как все работает на этой платформе, но теперь я заинтересован в разработке в Linux, и у меня было трудное время привыкание к рабочему процессу, отсутствие IDE и компиляция командной строки с помощью GCC. Кстати, я запускаю Xubuntu 13.10 64bit.

Чтобы проверить воды, я сделал то, что многие люди делали, и написал быструю программу «Hello World» на C ++.

#include <iostream>

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

Моя первая проблема; эта программа, похоже, получает ошибку компиляции, когда я пытаюсь ее скомпилировать с помощью GCC, но она компилируется отлично, когда я использую компилятор 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

Что здесь происходит, GCC не понимает, что мой код - C ++ или что-то еще?

Моя вторая проблема заключается в попытке использовать библиотеки: у меня создалось впечатление, что библиотеки разработки GTK + 3.0 поставляются с (X) ubuntu, но когда я пытаюсь выполнить простой учебник Вот, я получаю следующую ошибку из 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.

Итак, я интерпретировал это как означающее, что библиотеки для GTK + 3.0 не установлены. Поэтому я проверил apt-get, и я действительно не видел ничего похожего на то, что мне нужно. Я должен построить GTK +3.0 от источника, или есть где-то PPA, что мне нужно?

Эти проблемы мне очень неприятны. Я знаю, что многие люди клянутся рабочим процессом разработки GNU / Linux, но, как человек, который привык работать в Visual Studio, я нахожу этот процесс несколько непрозрачным и неинтуитивным. Прямо сейчас я использую Mousepad на Xubuntu для редактирования своего кода, и, хотя у него есть синтаксис с цветовой кодировкой, он, кажется, очень мало выходит за рамки этого. Я знаю, что в конечном итоге мне придется иметь дело с несколькими файлами и создавать make-файлы, и на данный момент я боюсь этого!

Независимо от того, какую помощь вы можете дать начинающему программисту и полному Linux / GNU noob, очень приветствуется!


4
2017-12-06 04:50


происхождения




ответы:


Совет

Прежде всего, вам не нужно соглашаться на отсутствие IDE. Установите Eclipse, он доступен в программном центре Ubuntu. Вы также хотите установить CDT для Eclipse, который дает вам поддержку C / C ++. Во-вторых, я бы посоветовал вам сосредоточиться на C ++ и Qt вместо C и GTK. Qt - отличная кросс-платформенная платформа, которая использует C ++ и QML (язык, подобный JavaScript для UI), и Ubuntu все больше и больше движется к использованию Qt для их будущего развития на рабочем столе и мобильных устройствах. Эти инструменты позволят вам не только создавать красивые приложения для рабочего стола Ubuntu, но и для Android, Windows, Mac, BlackBerry и других ОС. Отличная Qt-специфическая IDE - QtCreator, также доступная в Центре программного обеспечения Ubuntu, вы должны проверить ее на некоторых обучающих курсах Qt.

Ответ

Чтобы ответить на ваш вопрос напрямую, хотя я настоятельно рекомендую сделать то, что я изложил выше, вам, скорее всего, нужны версии -dev библиотек, которые вы используете. Для GTK 3 вам наверняка придется:

sudo apt-get install libgtk-3-dev

Это должно дать вам все заголовки GTK 3.


4
2017-12-06 05:06



Я признаю, что знаю Qt, и я принял решение попробовать GTK + несколько произвольно! Мое рассуждение было, как пользователь Xubuntu, я думал, что GTK, возможно, уже установлен из-за того, что он является зависимостью XFCE (если я не ошибаюсь). Кроме того, хотя GTK является библиотекой C, не работает ли она также с программами на C ++? Я не хочу, чтобы это стало войной GTK против Qt, я уверен, что оба они замечательные, но на данный момент я просто пытаюсь выбрать один и заставить его работать! - Кроме того, предложение Eclipse - это то, что нужно учитывать, наверняка ..:] - MrKatSwordfish
Посмотрите на мое редактирование. GTK - это зависимость, но для приложений для работы требуется только двоичная часть. То, что вам нужно скомпилировать, - это заголовки, которые входят в отдельный пакет - обычно имя библиотеки с -dev в конце. У меня было ощущение, что вы сделали выбор довольно произвольно из своего вопроса, поэтому я позволил себе дать вам какое-то направление. Вы можете использовать GTK с C ++, но вам нужно использовать другую библиотеку, если вы не хотите иметь дело с большим количеством уродливого C внутри C ++. Я думаю, что это GTKmm. Тем не менее, Qt намного более портативен, написан на C ++ и имеет отличный язык для пользовательских интерфейсов. - Nicolay Doytchev
Я бы сказал - попробуйте некоторые простые элементы пользовательского интерфейса в обоих и решите, оценивая потенциальное повторное использование кода, которое вы можете делать на всех платформах. Определенно попробуйте QtCreator. - Nicolay Doytchev
Установка libgtk-3-dev работала как шарм, спасибо! Конечно, это было бы так просто; я видел, что библиотеки времени выполнения были, но не заголовки. Все еще трудно найти то, что мне нужно (и то, что я уже установил), используя APT, но это вопрос в другое время. Я прочитал много замечательных вещей о Qt, и я обязательно попробую его ! Спасибо за простой, эффективный ответ И честный совет / мнение, лихорадка! - MrKatSwordfish
Кроме того, вы бы не поняли, почему у меня была проблема с GCC vs G ++ в начале моего вопроса, не так ли? Я предполагаю, что это связано с тем, что стандартная библиотека C ++ не включена правильно при запуске GCC, но я не уверен. Любые идеи? - MrKatSwordfish