সি ++ প্রোগ্রামগুলি সংকলন ও পরিচালনা করার জন্য একটি আদেশ কি?


89

আমি লিনাক্সে নতুন। আমি উবুন্টু ১১.০৪ ব্যবহার করছি এবং এতে সি ++ প্রোগ্রাম কীভাবে সংকলন করতে এবং চালিত করতে হয় তা আমি জানি না। লিনাক্সে একটি সি ++ প্রোগ্রাম সংকলন এবং সম্পাদন করার জন্য আমার কমান্ডগুলি জানতে হবে ।


1
উত্তরগুলির মধ্যে কোনটি আপনাকে সহায়তা করেছিল?
লিন্ডে

উত্তর:


108

আপনার সি ++ কোডটি সংকলন করতে, ব্যবহার করুন:

g++ foo.cpp

উদাহরণে foo.cpp হ'ল প্রোগ্রামটি সংকলিত হওয়ার নাম।

এটি একই ডিরেক্টরিতে এক্সিকিউটেবল উত্পাদন করবে a.outযা আপনি আপনার টার্মিনালে এটি টাইপ করে চালাতে পারেন:

./a.out

g ++ ইতিমধ্যে আপনার $ PATH এ থাকা উচিত, সুতরাং আপনার /usr/bin/g++স্পষ্টভাবে কল করার দরকার নেই , তবে আপনি যে কোনও ক্ষেত্রেই ব্যবহার করতে পারেন।

foo.cppআপনি যে কমান্ডটি চালাচ্ছেন একই ডিরেক্টরিতে থাকা উচিত। যদি কোনও সন্দেহ থাকে তবে আপনি টাইপ করে নিশ্চিত করতে পারেন যে আপনি একই ডিরেক্টরিতে রয়েছেন ls foo.cppবা head foo.cpp(যদি আপনার সঠিকটির সাথে কাজ করছেন যাচাই করার দরকার হয় তবে foo))

@ কন-এফ-ব্যবহার দ্বারা উল্লিখিত হিসাবে, সংকলক সাধারণত এই ফাইলটি কার্যকর করতে সক্ষম করে তোলে তবে তা না হলে আপনি নিজে এটি করতে পারেন (সুতরাং কার্যকর করার আদেশ ./a.outবা সমমানের আদেশটি কাজ করবে):

chmod +x ./a.out

সংকলিত আউটপুট ফাইলটির নাম নির্দিষ্ট করতে, যাতে এটি নাম না দেওয়া হয় a.out, -oআপনার g ++ কমান্ডটি ব্যবহার করুন।

যেমন

g++ -o output foo.cpp

এটি foo.cppনামের বাইনারি ফাইলটি সংকলন করবে outputএবং আপনি ./outputসংকলিত কোডটি চালাতে টাইপ করতে পারেন ।


6
সংকলকটি সাধারণত বাইনারি ( a.outএই ক্ষেত্রে) সম্পাদনযোগ্য করে তোলে । যদি না আপনি টাইপ করে এটি করতে পারেন: chmod +x a.out। যখন আপনার সংকলিত প্রোগ্রামটি এক্সিকিউটেবল হয়, আপনি এটিকে টাইপিং ./a.out- ডট এবং স্ল্যাশ ইঙ্গিতটি চালাতে পারেন যে আপনি এটি সম্পাদন করতে চান।
কন-এফ-ব্যবহার

@ রাজেশকুমার, আপনার পছন্দ অনুসারে এই উত্তরগুলির মধ্যে একটি খুঁজে পেয়েছেন? যদি তা হয় তবে আপনি দয়া করে তাদের মধ্যে একটিকে স্বীকৃত উত্তর হিসাবে চিহ্নিত করতে পারেন (উপরে / নীচে ভোটের তীরগুলির নীচে টিকটি বিক্রি করে) যাতে আমরা এই সমস্যার নীচে একটি লাইন আঁকতে পারি।

G ++ foo.c -o আউটপুট এবং g ++ -o আউটপুট foo.c এর মধ্যে কি পার্থক্য রয়েছে?
স্বর্ণের নাম

21

আমি এখানে দুটি অনুমান করছি:

  1. আপনার কাছে ইতিমধ্যে তৈরি করার জন্য একটি সি ++ উত্স ফাইল / প্রোগ্রাম রয়েছে
  2. আপনি আপনার কম্পিউটারে একটি বিল্ড সিস্টেম সেট আপ করেছেন

উবুন্টুতে একটি সি ++ প্রোগ্রাম সংকলনের সহজ উপায়, বা অন্য কোনও লিনাক্স ডিস্ট্রো সেই বিষয়ে টাইপ করা

g++ main.cpp -o main
  • জি ++ হ'ল জিসিসির সি ++ উপাদান , সি / সি ++ এর ডিফাক্টো সংকলক এবং লিনাক্স প্ল্যাটফর্মের অন্যান্য ভাষার সম্পূর্ণ হোস্ট is এটি বর্তমানে লিনাক্স কার্নেল সংকলন করতে সক্ষম একমাত্র সংকলক।
  • main.cpp হল সি ++ উত্স ফাইল যা আপনি সংকলন করতে চান।
  • -নো উত্সটি সংকলিত হয়ে গেলে আপনি যে আউটপুট ফাইলটি তৈরি করতে চান তার নাম নির্দিষ্ট করে main আপনি যদি চান তবে টার্গেট সোর্স ফাইল এবং টার্গেট আউটপুট ফাইলটি ইনভার্ট করা যায়, তাই g++ -o main main.cppসমানভাবে বৈধ।
  • তারপরে সেই প্রোগ্রামটি কার্যকর করতে, আপনাকে টার্মিনালে ./main করতে হবে।

উপরের কমান্ডগুলি ধরে নিয়েছে যে আপনি ইতিমধ্যে উত্স ফাইলগুলির অবস্থানটিতে রয়েছেন, তবে উত্স ফাইল এবং টার্গেট আউটপুট ফাইল উভয়ই ডিরেক্টরি হিসাবে নির্দিষ্ট করা যেতে পারে। উদাহরণ স্বরূপ

g++ ~/Desktop/main.cpp -o ~/Projects/main

আপনার ডেস্কটপে অবস্থিত একটি সি ++ উত্স ফাইলটি সংকলন করবে Projectsএবং আপনার হোম ডিরেক্টরিতে একটি ফোল্ডারে এক্সিকিউটেবল বাইনারি স্থাপন করবে । এই এক্সিকিউটেবল চালাতে, চালান ./Projects/main


5

এইভাবে আমি g ++ দিয়ে সংকলন করতে চাই।

$g++ -W -Wall -pedantic -o programName -p sourceFile.cpp

-W: Print extra warning messages for some problems.
-Wall: Enable all the warnings about questionable code
-pedantic: Show all the warnings demanded by strict ISO compliance
-o programName: place the executable output in programName sourceFile.cpp: the 
name of our source code file
-p: Generate extra code to write profile information suitable for the analysis program prof

1
-p: Generate extra code to write profile information suitable for the analysis program prof.
হান্স

আমি আপনার উত্তর পছন্দ। এটি অতিরিক্ত পরামর্শ নিয়ে আসে। তবে এটি সাধারণভাবে গ্রহণযোগ্য হওয়ার জন্য আপনার সত্যই পুনরায় বাক্যটি হওয়া উচিত।
লিনাক্সসিকিউরিটিফ্রাক

1

আপনার জি ++ প্রয়োজন, কারণ জিসিসি সহজে সিপিপি ফাইল সংকলন করতে পারে না।
সি কোড লিখতে আপনাকে ভিএম বা ইমাস শিখতে হবে।
আপনার টার্মিনালে এটি চেষ্টা করুন:

একটি পরীক্ষা প্রোগ্রাম টাইপ করুন এবং এটি সংরক্ষণ করুন:

$vim hello.cc

কম্পাইল hello.ccছ সঙ্গে ++,:

$g++ hello.cc -o hello

এটি কার্যকর করুন:

$./hello

এখানে ./অর্থ ফাইলটি বর্তমান ডিয়ারের অধীনে রয়েছে।


3
জিসিসি হ'ল সি এবং সি ++ কম্পাইলারের জন্য জিএনইউ সংকলক। এবং সি কোড লেখার জন্য ওপিকে অগত্যা ভিম বা ইমাস জানা দরকার নেই, অন্যান্য পাঠ্য সম্পাদক এবং আইডিই এর প্রচুর ভাসমান রয়েছে।
নিতিন ভেঙ্কটেশ

3
যদিও আমি ভিমকে ভালবাসি, যদি কেউ ইতিমধ্যে কীভাবে সমস্যা চালাবেন এটি সন্ধানের জন্য লড়াই করে, ভিম প্রস্তাব করা খুব বেশি কার্যকর নয়।
johanvdw

আমি ব্যক্তিগতভাবে পছন্দ করি না viতবে এতে কিছু আসে যায় না। আপনার কোনও নির্দিষ্ট সম্পাদককে পরামর্শ দেওয়া থেকে দূরে সরে যাওয়া উচিত, প্রত্যেকে নিজেরাই তার নিজের ব্যবহার করুন।
লিনাক্সসিকিউরিটিফ্রেক

0

g++gccকিছু পূর্বনির্ধারিত সি ++ ম্যাক্রো এবং বিভিন্ন ডিফল্ট বিকল্প / পতাকা সহ (জিএনইউ সংকলক সংগ্রহ) এর একটি ফ্রন্ট-এন্ড ।

সি ++ কোড সহ সংকলন gccকরা সহজ কারণ যখন g++কোনও সংখ্যক কারণে না পাওয়া যায়, আসলে এটি সি ++ লাইব্রেরির সাথে সংযোগ স্থাপন -lstdc++এবং জিসিসিকে ইনপুটটিকে সি ++ কোড হিসাবে গণ্য করার জন্য জানানো হয় (হয় কোনও .Cএক্সটেনশন ব্যবহার করে , বা ভাষাটি জোর করে) -x)
অন্যান্য বৈধ C ++ ফাইলের নাম প্রত্যয়: .cc, .cp, .cxx, .cpp, .CPP,.c++

উদাহরণ:

gcc cpp_code.C -lstdc++ বড়সির এক্সটেনশন ( .C) এটি জি সি সি এর জন্য একটি সি ++ ফাইল তা জানা গুরুত্বপূর্ণ।

বা স্পষ্টভাবে ইনপুট ভাষা নির্দিষ্ট করে:

gcc -x c++ cpp_code.txt -lstdc++ এক্সটেনশন কিছু হতে পারে, এমনকি কিছু না

ডিফল্টরূপে ফলাফল (একটি সফল সংকলনের পরে) একটি a.outফাইল যা চালানো যেতে পারে./a.out


আপনার উত্তরটি আরও তথ্যবহুল
বিল্লাল বেগেরাদজ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.