सवाल मैं उबंटू में जीटीके + विकास पुस्तकालयों का उपयोग कैसे करूं?


मैं विंडोज़ पर डेढ़ साल तक प्रोग्रामिंग कर रहा हूं और मैंने अभी उस प्लेटफॉर्म पर काम करने के तरीके के लिए उपयोग करना शुरू कर दिया है, लेकिन अब मुझे लिनक्स पर विकास में दिलचस्पी है और मुझे मुश्किल समय है वर्कफ़्लो, आईडीई की कमी, और जीसीसी के साथ कमांड लाइन संकलन में उपयोग करना। मैं Xubuntu 13.10 64 बिट, रास्ते से चल रहा हूँ ..

पानी का परीक्षण करने के लिए, मैंने बहुत से लोगों को किया और एक त्वरित सी ++ 'हैलो वर्ल्ड' कार्यक्रम लिखा।

#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

यहां क्या हो रहा है, क्या जीसीसी यह पहचानने में नाकाम रही है कि मेरा कोड सी ++ या कुछ है?

मेरा दूसरा मुद्दा पुस्तकालयों का उपयोग करने की कोशिश कर रहा है: मैं इस धारणा के तहत था कि जीटीके + 3.0 विकास पुस्तकालयों (एक्स) उबंटू के साथ शामिल हैं, लेकिन जब मैं सरल ट्यूटोरियल का पालन करने की कोशिश करता हूं यहाँ, मुझे 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.

तो फिर, मैंने व्याख्या की कि इसका अर्थ यह है कि जीटीके + 3.0 के लिए पुस्तकालय स्थापित नहीं हैं .. इसलिए मैंने एपीटी-गेट की जांच की, और मुझे वास्तव में कुछ भी दिखाई नहीं दे रहा था जो मुझे चाहिए .. क्या मुझे जीटीके बनाना है स्रोत से +3.0, या वहां कुछ पीपीए है जहां मुझे चाहिए ??

ये मुद्दे वास्तव में मुझे निराशाजनक हैं .. मुझे पता है कि बहुत से लोग जीएनयू / लिनक्स विकास वर्कफ़्लो द्वारा कसम खाता है, लेकिन किसी ऐसे व्यक्ति के रूप में जो विजुअल स्टूडियो में काम करने के लिए उपयोग किया जाता है, मुझे लगता है कि यह प्रक्रिया कुछ हद तक अप्रिय और अनजान है। अभी मैं अपने कोड को संपादित करने के लिए जुबंटू पर माउसपैड का उपयोग कर रहा हूं, और इसमें रंग-कोडित वाक्यविन्यास है, लेकिन ऐसा लगता है कि इससे बहुत कम कुछ ऐसा लगता है। मुझे पता है कि आखिरकार मुझे कई फाइलों से निपटना होगा और मेकफ़ाइल बनाना होगा और इस बिंदु पर, मैं इसे डर रहा हूं!

नौसिखिया प्रोग्रामर और कुल लिनक्स / जीएनयू नोब को आप जो भी मदद दे सकते हैं, उसका बहुत स्वागत है!


4
2017-12-06 04:50


मूल




जवाब:


सलाह

सबसे पहले, आपको कोई आईडीई के लिए बसने की ज़रूरत नहीं है। ग्रहण स्थापित करें, यह उबंटू सॉफ्टवेयर सेंटर में उपलब्ध है। आप ग्रहण के लिए सीडीटी भी स्थापित करना चाहते हैं जो आपको सी / सी ++ समर्थन देता है। दूसरा, मैं आपको सी और जीटीके के बजाय सी ++ और क्यूटी पर ध्यान केंद्रित करने की सलाह देता हूं। क्यूटी एक महान क्रॉस-प्लेटफार्म ढांचा है जो सी ++ और क्यूएमएल (यूआई के लिए एक जावास्क्रिप्ट जैसी भाषा) का उपयोग करता है, और उबंटू अपने भविष्य के डेस्कटॉप और मोबाइल विकास के लिए क्यूटी का उपयोग करने के लिए अधिक से अधिक आगे बढ़ रहा है। ये टूल आपको नबंटू डेस्कटॉप के लिए न केवल सुंदर एप्लिकेशन बनाने के लिए बल्कि एंड्रॉइड, विंडोज, मैक, ब्लैकबेरी और अन्य ओएस के लिए भी अनुमति देंगे। एक उत्कृष्ट क्यूटी-विशिष्ट आईडीई QtCreator है, उबंटू सॉफ्टवेयर सेंटर में भी उपलब्ध है, आपको इसे कुछ क्यूटी ट्यूटोरियल्स के साथ देखना चाहिए।

उत्तर

आपको सीधे जवाब देने के लिए, भले ही मैं ऊपर उल्लिखित किए गए कार्यों को करने की दृढ़ता से अनुशंसा करता हूं, आपको संभवतः आपके द्वारा उपयोग की जाने वाली पुस्तकालयों के -dev संस्करणों की आवश्यकता होती है। जीटीके 3 के लिए, आपको शायद यह करना होगा:

sudo apt-get install libgtk-3-dev

आपको सभी जीटीके 3 हेडर मिलना चाहिए।


4
2017-12-06 05:06



मैं स्वीकार करूंगा, मुझे क्यूटी के बारे में पता है, और मैंने कुछ हद तक मनमाने ढंग से जीटीके + को आजमाने का फैसला किया! मेरा तर्क एक जुबंटू उपयोगकर्ता के रूप में था, मैंने सोचा था कि जीटीके पहले से ही एक्सएफसीई की निर्भरता के कारण स्थापित हो चुका है (जब तक कि मुझे गलत नहीं लगता)। साथ ही, जबकि जीटीके सी पुस्तकालय है, क्या यह सी ++ कार्यक्रमों के साथ भी काम नहीं करता है? मैं नहीं चाहता कि यह जीटीके बनाम क्यूटी युद्ध बन जाए, मुझे यकीन है कि दोनों महान हैं, लेकिन इस बिंदु पर मैं सिर्फ एक चुनने और इसे काम करने की कोशिश कर रहा हूं! - इसके अलावा, ग्रहण सुझाव निश्चित रूप से विचार करने के लिए कुछ है ..:] - MrKatSwordfish
मेरे संपादन को देखो। जीटीके एक निर्भरता है, लेकिन ऐप्स के काम करने के लिए, केवल बाइनरी भाग की आवश्यकता है। आपको संकलन करने की आवश्यकता है हेडर, जो एक अलग पैकेज में आते हैं - आमतौर पर पुस्तकालय का नाम अंत में -dev के साथ होता है। मुझे लगा कि आपने अपने प्रश्न से मनमाने ढंग से पसंद किया है, यही कारण है कि मैंने आपको कुछ दिशा देने की अनुमति दी। आप सीटी + के साथ जीटीके का उपयोग कर सकते हैं लेकिन आपको दूसरी लाइब्रेरी का उपयोग करना होगा जबतक कि आप सी ++ के भीतर बहुत सारे बदसूरत सी से निपटना नहीं चाहते हैं। मुझे लगता है कि इसकी जीटीकेएम है। उस ने कहा, क्यूटी बहुत अधिक पोर्टेबल है, सी ++ में लिखा गया है और यूआई के लिए एक अच्छी भाषा है। - Nicolay Doytchev
मैं कहूंगा - दोनों में कुछ सरल यूआई सामानों को आजमाएं और अपने दिमाग को तैयार करें, संभावित कोड पुन: उपयोग का मूल्यांकन करें जो आप प्लेटफॉर्म पर कर सकते हैं। निश्चित रूप से QtCreator कोशिश करें। - Nicolay Doytchev
Libgtk-3-dev स्थापित करना एक आकर्षण की तरह काम किया, धन्यवाद! बेशक यह उतना आसान होगा जितना; रन टाइम पुस्तकालय वहां थे लेकिन हेडर नहीं, मैं देखता हूं। अभी भी एपीटी का उपयोग करके मुझे जो चाहिए (और जो मैंने पहले से स्थापित किया है) ढूंढना मुश्किल है, लेकिन यह एक और समय के लिए एक सवाल है .. मैंने क्यूटी के बारे में बहुत सी अच्छी बातें पढ़ी हैं, और मैं निश्चित रूप से इसे भी कोशिश करूंगा ! सरल, प्रभावी उत्तर और ईमानदार सलाह / राय, लाइट्रश के लिए धन्यवाद! - MrKatSwordfish
साथ ही, आपको कोई विचार नहीं होगा कि मेरे प्रश्न के शीर्ष पर जीसीसी बनाम जी ++ के साथ मुझे यह समस्या क्यों थी, क्या आप? मुझे लगता है कि जीसीसी के माध्यम से चलाने पर सी ++ मानक लाइब्रेरी को सही तरीके से शामिल नहीं किया जा रहा है, लेकिन मुझे यकीन नहीं है .. कोई विचार? - MrKatSwordfish