কম্পাইলেশন প্রক্রিয়া যেকোনো C++ কোডিং প্রজেক্টের একটি বড় অংশ। আপনাকে একটি কম্পাইলার দরকার যা ইফেক্টিভ এবং সিম্পল, পাশাপাশি বিভিন্ন ফাংশনালিটি অফার করে। ইহানেই g++ কম্পাইলার কাজে আসে। এটি আপনার কম্পাইলেশন প্রয়োজনের জন্য কমান্ড লাইন থেকে সরাসরি বিভিন্ন ফাংশন অফার করে। এখানে আমরা দেখাবো এই চমৎকার টুল কীভাবে শুরু করবেন।
g++ কী?
g++ কে ভালোভাবে বর্ণনা করা যায় একটি C++ কম্পাইলার যা আপনার কমান্ড লাইন থেকে রান করে। এটি ফ্রি সফটওয়্যার ফাউন্ডেশন দ্বারা রিলিজ করা হয়েছিল এবং GCC (GNU Compiler Collection) এর অংশ। এটি আপনার কোড, যা একটি হাই-লেভেল প্রোগ্রামিং ল্যাঙ্গুয়েজে লেখা (এই কেসে C++), একটি এক্সিকিউটেবল ফাইলে রূপান্তর করে নিচের লেভেলের ল্যাঙ্গুয়েজে ট্রান্সফর্ম করে যা কম্পিউটার বুঝতে পারে।
ইনস্টলেশন
অধিকাংশ লিনাক্স ইনস্টলেশন g++ আউট-অফ-দ-বক্স ইনস্টলড রেখে দেয়। তবে আপনার পছন্দের ডিস্ট্রোতে না থাকলে, নিচে ফলো করুন এবং কিছু সবচেয়ে কমন লিনাক্স ডিস্ট্রিবিউশনে কীভাবে ইনস্টল করবেন শিখুন।
উবুন্টু এবং ডেবিয়ানে apt প্যাকেজ ম্যানেজার ব্যবহার করে ইনস্টল করুন:
sudo apt update && sudo apt install g++
ফেডোরা এবং CentOS-এ yum প্যাকেজ ম্যানেজার ব্যবহার করে ইনস্টল করুন:
sudo yum install g++
আপনি pkgs.org থেকে একটি প্যাকেজ হিসেবে ডাউনলোডও করতে পারেন। এটি Curl টুল ব্যবহার করে করা যায়:
sudo curl https://ftp.de.debian.org/debian/pool/main/g/gcc-defaults/g++_10.2.1-1_amd64.deb -O
প্যাকেজটি dpkg ইউটিলিটি ব্যবহার করে ইনস্টল করতে পারেন:
sudo dpkg -i g++.deb
g++ ইনস্টলড কিনা চেক করতে --version ফ্ল্যাগ ব্যবহার করুন:
g++ --version
বেসিক ব্যবহার
এখন g++ ইনস্টল হয়ে গেলে, আপনি আপনার কম্পাইলেশন প্রয়োজনের জন্য এটি ব্যবহার শুরু করতে পারেন।
প্রথমে, --help ফ্ল্যাগ ব্যবহার করে ম্যানুয়াল একবার দেখে নেওয়া উপযোগী:
g++ --help
কখনও কখনও কম্পাইলার এবং এর সেটিংস সম্পর্কে এক্সট্রা ইনফরমেশন দেখতে উপযোগী হয়। কম্পাইলারের বিল্ট-ইন স্পেক স্ট্রিংস ডিসপ্লে করতে --dumpspecs ফ্ল্যাগ ব্যবহার করুন:
g++ --dumpspecs
এটি এর ক্যাপাবিলিটি এবং বিভিন্ন অপশনের একটি বেসিক ওভারভিউ দেবে।
g++ ব্যবহার করে একটি বেসিক কম্পাইলেশন করতে নিচের ফরম্যাট ব্যবহার করুন:
g++ [file]
যদি আমাদের "main.cpp" নামে একটি ফাইল থাকে, উদাহরণস্বরূপ, আমরা নিচের কমান্ড টাইপ করে এটি কম্পাইল করতে পারি:
g++ main.cpp
কম্পাইলড এক্সিকিউটেবল ফাইলটি ডিফল্টভাবে "a.out" নামে থাকে।
এটি চালাতে নিচের কমান্ড টাইপ করুন:
./a.out
আপনি যদি কম্পাইলড এক্সিকিউটেবল ফাইলের নাম স্পেসিফাই করতে চান, তবে -o ফ্ল্যাগ ব্যবহার করুন:
g++ -o [name] [file to compile]
মান লें আপনি এক্সিকিউটেবল ফাইলের নাম "main" রাখতে চান। তাহলে আপনি নিচের কমান্ড টাইপ করবেন:
g++ -o main main.cpp
আপনি যদি অবজেক্ট ফাইলগুলো লিংক করতে চান, তবে নিচের ফরম্যাট ব্যবহার করুন:
g++ -o [compiled file] [obj1.o] [obj2.o]
উদাহরণস্বরূপ, আপনি "object-1.o" এবং "object-2.o" অবজেক্ট ফাইলগুলো "main" এক্সিকিউটেবল ফাইলে কম্পাইল করতে চান। তাহলে নিচের কমান্ড টাইপ করুন:
g++ -o main object-1.o object-2.o
আপনি যদি একটি রুট ডিরেক্টরি স্পেসিফাই করতে চান যেখানে লাইব্রেরি এবং হেডার ফাইলগুলো পাওয়া যাবে, তবে --sysroot ফ্ল্যাগ ব্যবহার করুন:
g++ -o [name] --sysroot [directory] main.ccp
সর্বোচ্চ ওয়ার্নিং মেসেজ দেখানোর জন্য "-Wall" ব্যবহার করা
কখনও কখনও আপনার কম্পাইলার কম্পাইলেশনের সময় সকল ওয়ার্নিং মেসেজ দেখাবে সেটি উপযোগী। خوشকिस্মতено, g++-এ এই ফাংশনালিটি বিল্ট-ইন রয়েছে এবং ব্যবহার করা যাবে।
সকল ওয়ার্নিং মেসেজ দেখাতে -Wall ফ্ল্যাগ ব্যবহার করুন (বড় 'W'-টি নোট করুন):
g++ -o main main.cpp -Wall
স্ট্যাটিক লাইব্রেরি তৈরি করা
লাইব্রেরি তৈরি করা সফটওয়্যার ডেভেলপমেন্টে সঠিক কোড এডিটর বেছে নেওয়ার মতো বড় একটি অংশ। কিছু ট্রিক দিয়ে, যেন ar কমান্ড, আপনি সহজেই একটি লাইব্রেরি কম্পাইল করতে পারেন g++ ব্যবহার করে।
একটি অবজেক্ট ফাইল কম্পাইল করে শুরু করুন:
g++ -o obj.o main.cpp
পরবর্তী, ar ইউটিলিটি "rcs" দিয়ে ব্যবহার করে একটি আর্কাইভ (".a") ফাইল তৈরি করুন:
ar rcs archive.a obj.o
শেষে g++ দিয়ে এটি ব্যবহার করুন:
g++ -o final example.cpp archive.a
ফ্রিকোয়েন্টলি আস্কড কুয়েশচনস
১. কি আমি এই টুলটি .c ফাইল কম্পাইল করতে ব্যবহার করতে পারি?
টেকনিক্যালি, পারেন। তবে gcc ইউটিলিটি এতে বেশি উপযুক্ত যেহেতু g++ মূলত একটি C++ কম্পাইলার হওয়ার উদ্দেশ্যে তৈরি। এছাড়া g++ .c ফাইলগুলোকে C++ ফাইল হিসেবে ট্রিট করবে।
আপনি যদি g++ ব্যবহার করে .c ফাইল কম্পাইল করতে চান, তবে শুধু -c ফ্ল্যাগ ব্যবহার করুন:
g++ -c [example.c] -o example
২. কেন আমি শুধু GCC কে C++ কম্পাইলার হিসেবে ব্যবহার করব না?
আপনি খুব ভালোভাবে gcc-কে C++ কম্পাইলার হিসেবে ব্যবহার করতে পারেন। তবে g++ আসলে gcc-এর একটি অ্যাডাপটেশন যা C++-এর ওপর বেশি ফোকাস করে। তাই এটি C++ কোডের সাথে কাজ করা প্রোগ্রামারদের জন্য কিছু অডিশনাল ফাংশনালিটি এবং ফিচার অফার করে।
৩. লেটেস্ট ভার্সন কোনটি?
২০২২ সালের Q1 পর্যন্ত g++-র লেটেস্ট ভার্সন দেখাচ্ছে ১১.২.০। এটি ২০২১ সালের জুলাইতে রিলিজ হয়েছিল।