লিনাক্সে সি প্রোগ্রাম যেভাবে খুব সহজে কম্পাইল ও রান করা যায় …

আজ আমি আলোচনা করব লিনাক্সে যেভাবে সি প্রোগ্রাম সহজে কম্পাইল করা যায়। আর লিনাক্সের ডিস্টো হিসেবে উবুন্টু এবং লিনাক্স-মিন্টকেই প্রাধান্য দেয়া হল।

প্রথমে আপনি কোড ব্লকস ইন্সটল করে নিন।  ইন্সটল করতে এই লিঙ্কে যেয়ে আপনার জন্য প্রয়োজনীয় বিটের লিনাক্স-মিন্ট/উবুন্টুর জন্য ডেবিয়ান প্যাকেজটি ডাউনলোড করে নিন।  অথবা software manager থেকে codeblocks লিখে আপনার প্রয়োজনীয় সফটটি ইন্সটল করে নিন।  আর কোন জায়গায় সমস্যা হলে আমাকে কমেন্টে বা ইমেইলে নক করুন।  সীমিত জ্ঞানের পরিসীমা থেকে আপনাকে সাহায্য করার প্রচেষ্টা করব।

তারপর build essential সফটটি এই লিঙ্ক হতে ডাউনলোড করে নিন।  ইন্সটল করতে গেলে বাকি ফাইলগুলো অটোমেটিক খুব সুন্দর ভাবে ডাউনলোড হয়ে যাবে।

যাই হোক এখন কোড ব্লকস অপেন করুন। তারপর - code blocks - creat a new project - go- next- console application- go-  c - next - প্রোজেক্ট টাইটেল- প্রোজেক্টের ডাইরেক্টোরি - Next- finish.

এখানে একটা গুরুত্মপূর্ণ বিষয় আছে। তা হল প্রজেক্টের ডাইরেক্টোরি। আপনাকে প্রজেক্টের ডাইরেক্টোরি অবশ্যই File system এর Home ডাইরেক্টোরির যে কোন একটি ফোল্ডার(myproject) দেখিয়ে দিতে হবে।  আপনি যদি ইচ্ছামত সি, ডি বা ই ড্রাইভের ফোল্ডারে দিতে যান তাহলে কিন্তু হবে না।

ওকে , এবার বামদিকে নিচে source- main এ ডাবল ক্লিক করুন।  এবার আপনি আপনার কোড লিখুন।

তারপর সেভ করে কম্পাইল করুন। সেভ করে ctrl+ S দিয়ে আর কম্পাইল আর রান করে F9 দিয়ে।আরেকটা কথা যারা কোডব্লকস ইউজ করেন তারা নিশচয় জানেন কোডব্লকস এ clrscr(); এ কোড দেয়া লাগে না।

#### এই লেখাটি লিখেছি কয়েকটি কারনে।  গুগলে যখন উবুন্টুতে কিভাবে প্রোগ্রামিং করব তা নিয়ে সার্চ দেই তখন ভাল কোন সলিউশন খুজ়ে পাই না। আবার কোড ব্লকস ইউজ করার পরও যে g++ ইন্সটল দিতে হয় তা অনেকেই হয়ত নাও জানতে পারেন।  আবার এত সব থাকার পরও যে আমাকে আমার প্রজেক্ট যে কোন ড্রাইভে সেভ না করে File system  এ সেভ করতে হবে, এ অতি সাধারন অথচ গুরুত্মপূর্ণ বিষয়, এটাও অনেকে নাও জানতে পারেন।

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

আবার গুগলিং করে অনেকে বের করতে পারেন যে কিভাবে লিনাক্সের একটি প্রোগ্রাম Gedit দিয়ে লিখতে হয়। তারপর তা আবার কম্পাইল করার জন্য Terminal এ গিয়ে জ্ঞানীর মত বিভিন্ন কোড রান করে কি কষ্ট করেই না কম্পাইল করতে হয়। এগুলো দেখে যে কোন নবীন ব্যবহারকারীর মনে হতে পারে, " লিনাক্স ! সে চশমাপরা জ্ঞানীদের জন্য ।  আমাদের জন্য পাইরেটেড উইন্ডোজই ভাল। "

ও আচ্ছা,  আর লেখায় কোন ভুল থাকলে লিনাক্স বিশেষজ্ঞরা ভুলগুলো ধরিয়ে দিবেন।

জানি এসব লিনাক্স জাতীয় লেখায় ভিজিটর কম বা কমেন্ট কম আসে।  কিন্তু আজ থেকে ২ দিন বা মাস বা বছর পরেও যদি কারো লেখাটা দরকার হয় এবং উপকারে আসে সেটাই বড় সার্থকতা। ধন্যবাদ সবাইকে।  এখন অনেক রাত .........

code blocks - creat a new project - console application- c - প্রোজেক্ট টাইটেল(abc) - finish.

Level 0

আমি Mashpy Says। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 14 বছর যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 25 টি টিউন ও 1964 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 1 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।

প্রয়োজনের সময় আমি অনেকের কাছেই প্রয়োজনীয়।


টিউনস


আরও টিউনস


টিউনারের আরও টিউনস


টিউমেন্টস

জটিল এক টিউন করলেন। অনেক ধন্যবাদ।

এত দিন শুধু পড়তেন, ভালো লাগছে আপনি টিউন করা শুরু করছেন দেখে। নিয়মিত টিউন করবেন 🙂

    আপনারা যেই বিশাল জ্ঞানী আর মাথায় যেভাবে একটার পর একটা এক্সুসিভ টপিক ঘুরে, আমার আবার তেমন না। বিভিন্ন সাইটে শিখতে শিখতেই দিনের পর দিন কেটে যায়। টিউন করা আর হয়ে উঠে না। আর নতুন কোন টপিক পেলে টিউন করার চেষ্টা করব। টেকটিউন্স এলেক্সা রেঙ্কিং এ ১৮-১৯ নাম্বারে উঠেছে সত্য, কিন্তু আয়ের টিউনে চাপে এইটা যে আর কত মিনিট প্রথম পেজ এ থাকবে তার হিসাব বসে বসে করতে হচ্ছে। বাই, গুড নাইট।

    😛 😛 😛

কমেন্ট টা করতেছি লিনাক্স মিন্ট ব্যবহার করে।লিনাক্স জগতে নতুন প্রবেশ করলাম।তবে টিউনের বিষয়বস্তু নিয়ে কিছুটা কনফিউশানের মধ্যে আছি।সি প্রথম সেমিস্টারে করেছিলাম ২ বছর আগে।ভুলেও গিয়েছি অনেক কিছু।এখন নতুন করে আবার শিখতেছি।এখানে কম্পাইল করা বলতে কি সেভ করা ফাইল রান করে আউটপুট দেখা বুঝাচ্ছেন?নাকি প্রোগ্রাম এখানে লিখে রান করার কথা বুঝাচ্ছেন।উইন্ডোজে টার্বো সি প্লাস বা বোরল্যান্ড সি সফট এ লিখে প্রোগ্রাম রান করে দেখতাম।লিনাক্স করতে হলে কি করতে হবে?
আমি মুলত ইলেক্ট্রিক্যালের ছাত্র তাই খুব বেশী আইডিয়া নেই সি এর ব্যাপারে।আমি চাচ্ছি এখানে লিখে এখানেই আউটপুট দেখতে।

    জি, আমি আসলে ফাইল সেভ করে, কম্পাইল করে রান করে আউটপুট দেখাকে বুঝিয়েছি। কারন এই আউটপুট দেখাই তো আসল। আউটপুট দেখার জন্য অনেকে gedit এ কোড লিখে টার্মিনালে আবারো কোড লিখে কম্পাইল করারনোর চেষ্টা করে। ভাইরে কি কঠিন !!!
    আমার প্রিয় সাইট acm সল্ভার কি কঠিন করে সি কম্পাইল করা শিখাল দেখেন – http://www.acmsolver.org/bangla/?p=1144
    প্রায় এই ধরনের কঠিন লেখাই গুগলিং করে বেশির ভাগ জায়গায় পেয়েছি, যেখানে বার বার বলা আছে text editor দিয়ে ফাইল.c নামে সেভ করুন কম্পাইল করার জন্য টামিনালে কোড লিখুন আবার রান করার জন্য আরেকবার কোড লিখুন। যদিও শেষ দিকে বলা আছে, "আর আইডিই ব্যাবহার করেও করতে পারেন। geany আমার পছন্দের একটি আইডিই। codeblocks ও ব্যাবহার করতে পারেন সি বা সি প্লাস প্লাস এর জন্য। " —- কিন্তু আইডি ই ঠিকভাবে ব্যবহার করে কোড কম্পাইল করার কোন পদ্ধতি খুজে পাই নি। code blocks ডাউনলোড করার পরও যে g++ ডাউনলোড করতে হবে, তারপর File system এ আমার প্রোগ্রাম সেভ করা লাগবে, এই জিনিস কে শিখাবে?

    @ মাসপি এখন লিনাক্স-মিন্টে: হাই ! প্রথমে দারুন একটি সহজবোধ্য টিউটোরিয়াল লেখার জন্য ধন্যবাদ।

    এসিএম সলভারে সি প্রোগ্রামিং কম্পাইল করার যে পদ্ধতিটি দেখানো হয়েছে তা খুবই বেসিক পর্যায়েঃ
    ——————————————————————
    কম্পাইল করার জন্য টার্মিনালে লিখুন
    gcc -o helloworld helloworld.c
    —————————————————————–
    কিন্তু মজার ব্যপার হলো একটা প্রোগ্রাম হতে পারে অনেকগুলো ফাইলের সমষ্টি (কাস্টম হেডার ফাইল ইত্যাদি) তখন কিন্তু makefile বানিয়ে কনসোল থেকেই কম্পাইল করতে হবে। একটি উদাহরণ দেখাইঃ

    MakeFile

    ——————–
    # the compiler to use.
    CC=g++
    # CFLAGS will be the
    # options I'll pass to the compiler.
    CFLAGS=-c -Wall

    all: hello

    hello: main.o factorial.o hello.o
    $(CC) main.o factorial.o hello.o -o hello

    main.o: main.cpp
    $(CC) $(CFLAGS) main.cpp

    factorial.o: factorial.cpp
    $(CC) $(CFLAGS) factorial.cpp

    hello.o: hello.cpp
    $(CC) $(CFLAGS) hello.cpp

    clean:
    rm -rf *o hello

    ———————

    এবার যদি কনসোলে লিখিঃ
    কম্পাইল এর জন্য
    $ make

    আর রান করানোর জন্য
    $ ./hello

    সব কথার বড় কথা হলো IDE ব্যবহার করে কোড ফারম্যাট করা সহজ কিন্তু প্রোগ্রাম কম্পাইল করার জন্য কনসোলই ভাল। কারণ, প্রোগ্রামটি এমনও হতে পারে যে কয়েক ঘন্টা কিংবা কয়েকদিন ধরে চলে তারপর আউটপুট দিবে (অন্তুত বিশাল আকৃতির ডাটা সেটের জন্য এমনটি হতেই পারে)।

    তাই, শুরু হিসেবে gcc compiler এর বেসিক জেনে আগানোই ভাল। সেই হিসেবে এসিএম সলভারে টিউটোরিয়ালটি (http://www.acmsolver.org/bangla/?p=1144) যার মূল লেখক রাশেদুল কবির, মনে হয় খুব কঠিন ছিল না।

    ধন্যবাদ

    আরেফীন। এসিএমসলভারের পক্ষ থেকে।

    সূত্রঃ
    ১. http://www.cmake.org/
    ২. http://mrbook.org/tutorials/make/
    ৩. http://www.cs.colby.edu/maxwell/courses/tutorials/maketutor/

    এই তো টেকি বিশেষজ্ঞরা আইসা গেছে !
    যাক অনেক ধন্যবাদ বিস্তারিত ব্যাখ্যার জন্য। আসলে এত কোড দেখলে নিজেরও ভয় লাগে। যাই হোক , প্রোগ্রামিং জগতে নতুন তো, আশা করি সামনের দিনগুলোতে সব ঠিক হয়ে যাবে।

    মাথা ঘুরতেছে আরেফীন ভাইয়ের কমেন্ট পড়ে। 😕

অনেক কাজের টিউন। ধন্যবাদ আপনাকে মাসপি ভাই।

Level 0

code blocks ডাউনলোড করার পরও g++ ডাউনলোড করতে হবে কেন ও File system এ আমার প্রোগ্রাম সেভ করা লাগবে কেন ? বিসতারিত জানাবেন plz…
code block এ compile করতে পারছি না।
"hello world – Debug" uses an invalid compiler. Probably the toolchain path within the compiler options is not setup correctly?! Skipping…
Nothing to be done.
এই error দেয়..plz help

    Go to:

    * 1.Create project
    * 2.All "Settings"> "Compiler and debugger"
    * 3.You will see a toolbar that correspond to "Toolchain executables"
    * 4.You will see "Compiling's instalation directory" (marked in blue)
    * 5.You just have to click on "Auto Detect". (Once it's done, click on build and run)

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

Level 0

I like Dev C++ for my windows but for Linux Codeblocks is best 😀

Codeblocks can be used over windows too 😀

    ঠিক বলেছেন কোডব্লকস অনেক ভাল।
    প্লিজ উইন্ডোজের নাম নিয়েন না, এই উইন্ডোজ আমারে অনেক কষ্ট দিসে। যতই সেটাপ দেই কোন কাজ হয় না। খালি ডিস্টার্ব আর ভাইরাস আর ভাইরাস। এই জিনিস ছাইড়া দিসি।

মাসপি ভাই খুব ভালো লিখেছেন। আমাদের প্রোগ্রামিং শেখানো হয় উইন্ডোজ প্লাটফর্ম থেকে, সফটওয়্যার লাগে টার্বো সি বা এমএস ভিসুয়াল সি :-s লিনাক্সে এই IDE আর কোডব্লক খুব ভালো কাজ করে। এমনকি স্ল্যাক্স থেকেও খুব খুব সহজেই কম্পাইল করা যায় 🙂

ভার্সিটিগুলাতে বা কোন টিউটরিয়াল সেন্টারে এমনভাবে টার্বো ধরানো হয় যে মনে হয় প্রোগ্রামিং বুঝি উইন্ডোজ ছাড়া আর কোনতাতে এত সহজে করা যায় বা। আমি এখন আমার সকল সি প্রোগ্রাম লিনাক্সে করি।

    মাসপি ভাই দিন বদলাইছে, আমি জাতীয় বিশ্ববিদ্যালয়ের অধীনে ইন্সটিটিউট অব সায়েন্স এন্ড টেকনোলজী তে পরি। আমাদের শুরু থেকেই জিসিসি তে কোড করানো মিখানো হয়েছে। মজার কথা হচ্ছে আমরা টারবো সিতে কোড কেমন করে করতে হয় তাই জানিনা। 😀

    মাসপি ভাই দিন বদলাইছে, আমি জাতীয় বিশ্ববিদ্যালয়ের অধীনে ইন্সটিটিউট অব সায়েন্স এন্ড টেকনোলজী তে পরি। আমাদের শুরু থেকেই জিসিসি তে কোড করানো শিখানো হয়েছে। মজার কথা হচ্ছে আমরা টারবো সিতে কোড কেমন করে করতে হয় তাই জানিনা। 😀

Level 0

problem compile e

obj/Debug/main.o||In function `main’:|
/home/raihan/Documents/cpp/my project/main.c|
2|multiple definition of `main’|
obj/Debug/1.o:/home/raihan/Documents/cpp/my project/1.c|2|first defined here|
||=== Build finished: 2 errors, 0 warnings ===|

#include
int main(){
int year;
printf(“Enter Your Desire Year For Check Leap Year Or Not : “);
scanf(“%d”,&year);
if((((year%4)==0)&&((year%100)!=0))||((year%400)==0))
printf(“\n You Enter %d year and its Leap Year”,year);
else
printf(“\n this %d year is not leap”,year);
return 0;}
e code ta geany te kaj kore code block e kre na help me pls

    Level 0

    @Raihan:1st source stdio.h mising coment er time bujlam na

    #include
    void main(){
    int year;
    printf(“Enter Your Desire Year For Check Leap Year Or Not : “);
    scanf(“%d”,&year);
    if((((year%4)==0)&&((year%100)!=0))||((year%400)==0))
    printf(“\n You Enter %d year and its Leap Year”,year);
    else
    printf(“\n this %d year is not leap”,year);
    return ;}