سؤال كيف أستخدم مكتبات تطوير GTK + في أوبونتو؟


أقوم بالبرمجة لمدة عام ونصف تقريبًا على Windows وبدأت في التعود على الطريقة التي تعمل بها الأشياء على هذا النظام الأساسي ، ولكن الآن أنا مهتم بالتطوير على Linux وقد واجهت وقتًا عصيبًا التعود على سير العمل ، ونقص IDE ، وتجميع سطر الأوامر مع GCC. أنا أركض Xubuntu 13.10 64bit ، بالمناسبة ..

لاختبار المياه ، فعلت ما قام به العديد من الناس وكتب برنامج "مرحبا العالم" سريع C ++.

#include <iostream>

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

مشكلتي الأولى هي يبدو أن هذا البرنامج يحصل على خطأ تجميعي عندما أحاول تجميعه باستخدام دول مجلس التعاون الخليجي ، لكنه يتجميع بشكل جيد عند استخدام مترجم 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

ما الذي يحدث هنا ، هل فشل مجلس التعاون الخليجي في إدراك أن شيفتي هي C ++ أو شيء من هذا؟

مشكلتي الثانية هي محاولة استخدام المكتبات: لقد كنت تحت الانطباع بأن مكتبات تطوير GTK + 3.0 تأتي مشمولة مع (X) أوبونتو ، ولكن عندما أحاول اتباع البرنامج التعليمي البسيط هنا، أحصل على الخطأ التالي من 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 في مكان ما أحتاجه؟

هذه القضايا محبطة حقا بالنسبة لي .. أعرف أن الكثير من الناس يقسمون من خلال سير عمل تطوير جنو / لينكس ، ولكن كشخص اعتاد على العمل في Visual Studio ، فإنني أجد أن هذه العملية غير شفافة إلى حد ما وغير واضحة. الآن أنا أستخدم Mousepad على Xubuntu لتحرير شفرتي ، وعلى الرغم من أنه يحتوي على صيغة مرمزة بالألوان ، يبدو أنه لا يفعل سوى القليل جدًا. وأنا أعلم أنه في نهاية المطاف سآخذ للتعامل مع ملفات متعددة وإنشاء makefiles ، وفي هذه المرحلة ، أنا أشعر بالخوف من ذلك!

مهما كانت المساعدة التي يمكنك تقديمها إلى مبرمج مبتدئ ومجموع Linux / GNU noob فهو موضع ترحيب كبير!


4
2017-12-06 04:50


الأصل




الأجوبة:


النصيحة

بادئ ذي بدء ، لا يتعين عليك الاستقرار دون IDE. قم بتثبيت Eclipse ، وهو متوفر في مركز برامج Ubuntu. أنت أيضاً تريد تثبيت CDT لـ Eclipse الذي يمنحك دعم C / C ++. ثانيًا ، أنصحك بالتركيز على C ++ و Qt بدلاً من C و GTK. كيو تي هو إطار عمل متعدد المنصات يستخدم لغة C ++ و QML (لغة تشبه لغة JavaScript) ، ويتحرك Ubuntu أكثر فأكثر نحو استخدام Qt لتطويرها على سطح المكتب والجوال في المستقبل. هذه الأدوات لن تسمح لك بإنشاء تطبيقات جميلة لسطح مكتب Ubuntu فحسب ، بل أيضًا لأجهزة Android و Windows و Mac و BlackBerry وأنظمة تشغيل أخرى. إن بيئة تطوير متكاملة خاصة بـ QT ممتازة هي 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 ++؟ لا أريد أن يصبح هذا جي تي كي مقابل حرب كيو تي ، أنا متأكد من أن كلاهما رائع ، ولكن في هذه المرحلة أحاول فقط اختيار واحد والحصول عليه يعمل! - أيضا ، اقتراح Eclipse هو شيء للنظر ، بالتأكيد ...:] - MrKatSwordfish
انظر إلى تعديلي. GTK هو تبعية ، ولكن لكي تعمل التطبيقات ، لا يلزم سوى الجزء الثنائي. ما تحتاج إلى تجميعه هو العناوين ، التي تأتي في حزمة منفصلة - عادة اسم المكتبة مع -dev في النهاية. كان لدي شعور بأنك اتخذت هذا الخيار بشكل تعسفي بدلاً من سؤالك ، ولهذا سمحت لنفسي بإعطائك بعض التوجيه. يمكنك استخدام GTK مع C ++ ولكن عليك استخدام مكتبة أخرى إلا إذا كنت ترغب في التعامل مع الكثير من C القبيح داخل C ++. أعتقد أن GTKmm لها. ومع ذلك ، Qt هو أكثر من ذلك بكثير المحمولة ، هو مكتوب في C ++ ولديه لغة كبيرة لأجسام المستخدم. - Nicolay Doytchev
أود أن أقول - جرب بعض الأشياء البسيطة لواجهة المستخدم في كلٍ منكما وفكرك ، وقم بتقييم إعادة استخدام التعليمات البرمجية المحتملة التي يمكنك القيام بها عبر المنصات مع أي منهما. بالتأكيد حاول QtCreator. - Nicolay Doytchev
عملت تثبيت libgtk-3-dev مثل السحر ، وذلك بفضل! بالطبع سيكون الأمر بهذه البساطة كانت المكتبات وقت التشغيل هناك ولكن ليس الرؤوس ، وأنا أرى. لا تزال تجد صعوبة في العثور على ما أحتاج إليه (وما قمت بتثبيته بالفعل) باستخدام APT ، ولكن هذا سؤال لمرة أخرى .. لقد قرأت الكثير من الأشياء الرائعة حول Qt ، وسأحاول بالتأكيد أن أجربها أيضًا ! شكرا للإجابة بسيطة وفعالة ونصيحة صادقة / الرأي ، lightrush! - MrKatSwordfish
أيضا ، أنت لن تحصل على أي فكرة لماذا كان لي هذه المسألة مع دول مجلس التعاون الخليجي مقابل G + + أعلى سؤالي ، أليس كذلك؟ أنا أظن أن هناك علاقة مع مكتبة C ++ القياسية لا يتم تضمينها بشكل صحيح عند تشغيلها في دول مجلس التعاون الخليجي ، لكني لست متأكداً .. أي أفكار؟ - MrKatSwordfish