উত্তর:
যদি এটি একটি সাধারণ একক উত্স প্রোগ্রাম:
make foo
যেখানে উত্স ফাইলটি foo.c বা foo.cpp ইত্যাদি is
আপনি এমনকি একটি makefile প্রয়োজন না। আপনার উত্স ফাইলটি একই নাম, বিয়োগ এক্সটেনশনের একটি এক্সিকিউটেবলের মধ্যে তৈরি করতে মেকের যথেষ্ট বিল্ট-ইন বিধি রয়েছে।
সবে নির্মিত নির্মিত এক্সিকিউটেবল চালানো যে কোনও প্রোগ্রাম চালানোর সমান - তবে আপনাকে প্রায়শই নির্বাহকের জন্য পথ নির্ধারণ করতে হবে কারণ শেলটি কেবল এক্সিকিউটেবলগুলি অনুসন্ধান করার জন্য যা অনুসন্ধান করে $PATH
এবং প্রায়শই এটি বর্তমান ডিরেক্টরি অন্তর্ভুক্ত করে না ( .
)।
সুতরাং বিল্ট এক্সিকিউটেবল চালানোর জন্য foo
:
./foo
make main.cpp
, কিন্তু make main
।
gcc main.cpp -o main.out
./main.out
Undefined symbols for architecture x86_64
ইস্যু সম্পর্কে , আমি কমান্ডটি নিম্নরূপে সংশোধন করেছি: gcc -lstdc++ main.cpp -o main.out
এবং এটি আমার ম্যাকটিতে কাজ করে। : লিঙ্কের মাধ্যমে stackoverflow.com/questions/11852568/...
এটি হ'ল কমান্ড যা সমস্ত ইউনিক্স মেশিনে কাজ করে ... আমি এটি লিনাক্স / উবুন্টুতে ব্যবহার করি তবে এটি ওএস এক্সেও কাজ করে। টার্মিনাল.্যাপে নিম্নলিখিত কমান্ডটি টাইপ করুন ।
$ g++ -o lab21 iterative.cpp
-o
চিঠি হে শূন্য নয়?
lab21
আপনার এক্সিকিউটেবল ফাইল হবে
iterative.cpp
আপনার সি ++ ফাইল
আপনি এই কমান্ডটি চালনার পরে আপনার প্রোগ্রামটি চালানোর জন্য টার্মিনালে নিম্নলিখিত টাইপ করুন:
$ ./lab21
আমার জন্য দুটি পদক্ষেপ:
প্রথম:
make foo
তারপর:
./foo
./foo
কীভাবে গৃহীত উত্তরগুলির এই গুরুত্বপূর্ণ কমান্ডের টুকরো নেই
একটি ইউনিক্সের সমস্ত অ্যাপ্লিকেশন সম্পাদন (লিনাক্স, ম্যাক ওএস এক্স, এআইএক্স, ইত্যাদি) পরিবেশনের নির্বাহযোগ্য অনুসন্ধানের পথের উপর নির্ভর করে।
আপনি এই কমান্ডটি দিয়ে টার্মিনালে এই পথটি প্রদর্শন করতে পারেন:
প্রতিধ্বনি $ পথ
ম্যাক ওএস এক্সে (ডিফল্টরূপে) এটি নিম্নলিখিত কোলন দ্বারা পৃথক করা অনুসন্ধানের পথটি প্রদর্শন করবে:
, / Usr / বিন: / বিন: / usr / sbin: পক্ষ থেকে / sbin / usr / স্থানীয় / বিন / usr / ব্যবহারে X11 / বিন
সুতরাং তালিকাবদ্ধ ডিরেক্টরিতে যে কোনও এক্সিকিউটেবল কেবল তাদের নামে টাইপ করে চালানো যায়। উদাহরণ স্বরূপ:
বিড়াল mytextfile.txt
এই রান /bin/cat
টার্মিনালে mytextfile.txt এবং প্রদর্শন করে।
এক্সিকিউটেবল অনুসন্ধানের পথে নেই এমন অন্য কোনও কমান্ড চালনা করার জন্য আপনার মৃত্যুদন্ড কার্যকর করার পথটিকে যোগ্য করে তোলা দরকার। সুতরাং বলুন যে আমার কাছে ম্যাক ওএস ইলেভেনের হোম ডিরেক্টরিতে মাইপ্রোগ্রাম নামে একটি এক্সিকিউটেবল ছিল এটি পুরোপুরি এর মতো যোগ্যতা অর্জন করতে পারে:
/ ব্যবহারকারীরা / অলিভার / MyProgram
আপনি যদি এমন কোনও স্থানে থাকেন যা আপনি প্রোগ্রামটির নিকটবর্তী হন যা আপনি কার্যকর করতে চেয়েছিলেন তবে আপনি নামটিকে একটি আংশিক পথ দিয়ে যোগ্য করতে পারেন। উদাহরণস্বরূপ, যদি MyProgram
ডিরেক্টরির মধ্যে ছিল /Users/oliver/MyProject
আমি ও আমি আমার home ডিরেক্টরির ছিল আমি ভালো এক্সিকিউটেবল নাম যোগ্যতা অর্জন পারেন, এবং এটি চালানো আছে:
MyProject / MyProgram
অথবা বলুন যে আমি ডিরেক্টরিতে /Users/oliver/MyProject2
ছিলাম এবং আমি নির্বাহ /Users/oliver/MyProject/MyProgram
করতে চেয়েছিলাম যে আমি এটির মতো একটি প্রাসঙ্গিক পথ ব্যবহার করতে পারি:
../MyProject/MyProgram
একইভাবে যদি আমি একই ডিরেক্টরিতে থাকি তবে আমাকে MyProgram
"বর্তমান ডিরেক্টরি" আপেক্ষিক পথ ব্যবহার করতে হবে। আপনার বর্তমান ডিরেক্টরিটি হ'ল পিরিয়ড অক্ষর এবং তারপরে একটি স্ল্যাশ। উদাহরণ স্বরূপ:
./MyProgram
আপনি বর্তমানে কোন ডিরেক্টরিটি ব্যবহার করছেন তা নির্ধারণ করতে pwd
কমান্ডটি ।
আপনি যদি নিজের হার্ড ডিস্কে এমন কোনও স্থানে প্রোগ্রামগুলি রাখছেন যা আপনি নামগুলির যোগ্যতা ছাড়াই চালনা করতে চান। উদাহরণস্বরূপ, অন্যান্য প্রোগ্রামের নিয়মিত ব্যবহৃত শেল স্ক্রিপ্টগুলির জন্য যদি আপনার বাড়ির ডিরেক্টরিতে একটি "বিন" ডিরেক্টরি থাকে তবে এটি কার্যকর করার যোগ্য অনুসন্ধানের পথটি পরিবর্তন করা বুদ্ধিমানের কাজ হতে পারে।
এটি .bash_profile
আপনার হোম ডিরেক্টরিতে বিদ্যমান ফাইলটি তৈরি বা সম্পাদনা করে এবং লাইনগুলি যুক্ত করে সহজেই করা যায় :
#!/bin/sh
export PATH=$PATH:~/bin
এখানে টিলড (~) অক্ষরটি / ব্যবহারকারী / অলিভারের শর্টকাট হিসাবে ব্যবহৃত হচ্ছে। এছাড়াও নোট করুন যে হ্যাশ ব্যাং (#!) লাইনটি ফাইলের প্রথম লাইন হওয়া দরকার (যদি এটি ইতিমধ্যে বিদ্যমান না থাকে)। আরও লক্ষ করুন যে এই কৌশলটির জন্য আপনার লগইন শেলটি বাশ করা উচিত (ম্যাক ওএস এক্স এবং বেশিরভাগ লিনাক্স বিতরণে ডিফল্ট)। এছাড়াও নোট করুন যে আপনি যদি চান যে আপনার প্রোগ্রামগুলি ~/bin
ইনস্টিটিউট সিস্টেমের এক্সিকিউটেবলের অগ্রাধিকার হিসাবে ব্যবহৃত হয় তবে আপনার রফতানি বিবৃতিটিকে নিম্নরূপে পুনঃক্রম করতে হবে:
export PATH=~/bin:$PATH
রায়ান, আমি এটি একটি মন্তব্যের পরিবর্তে একটি উত্তর হিসাবে পরিবর্তন করছি, যেহেতু এটি প্রদর্শিত হয় আমি খুব সংক্ষিপ্ত ছিল। "টার্মিনাল" এ সমস্ত কিছু করুন।
জি ++ সংকলকটি ব্যবহার করতে, আপনাকে এটি করতে হবে:
যে ডিরেক্টরিতে আপনি * .cpp ফাইলটি সঞ্চিত করেছেন সেটিতে নেভিগেট করুন।
cd ~/programs/myprograms/
(~ হ'ল আপনার বাড়ির শর্টকাট, যেমন / ব্যবহারকারী / রায়ান / প্রোগ্রাম / মাইপ্রোগ্রাম /, আপনি যে অবস্থানটি ব্যবহার করেছেন তা বাস্তবে প্রতিস্থাপন করুন))
এটি সংকলন
g++ input.cpp -o output.bin
(আউটপুট.বিন যে কোনও এক্সটেনশনের সাথে কিছু হতে পারে, সত্যই। বিন ইউনিক্সে কেবল সাধারণ)
এটি সফল হলে কিছুই ফেরত আসা উচিত, এবং এটি ঠিক আছে । সাধারণত আপনি ব্যর্থতা উপর রিটার্ন পেতে।
তবে আপনি যদি টাইপ করেন তবে আপনি ls
একই ডিরেক্টরিতে থাকা ফাইলগুলির তালিকা দেখতে পাবেন। উদাহরণস্বরূপ আপনি অন্যান্য ফোল্ডারগুলি, ইনপুট সিপি এবং আউটপুট.বিন দেখতে পাবেন
ডিরেক্টরি ভিতরে, এখন এটি দিয়ে চালানো ./outbut.bin
এটি করার জন্য একটি সংক্ষিপ্ত উপায় হতে পারে:
make foo && ./$_
ওয়ান-লাইনার পেয়ে ভাল লাগল যাতে আপনি সহজেই নিজের এক্সিকিউটেবলটি আবার সহজে চালাতে পারেন।
বর্তমান ডিরেক্টরিটি ধরে নিচ্ছি যে পথে নেই, সিনট্যাক্সটি রয়েছে ./[name of the program]
।
উদাহরণ স্বরূপ ./a.out
সেরা সতর্কতা পেতে নিম্নলিখিত যুক্ত করুন, আপনি এটির জন্য আফসোস করবেন না। আপনি যদি পারেন তবে WISE সংকলন করুন (সতর্কতাটি ত্রুটিযুক্ত)
- Wall -pedantic -Weffc++ -Werror
সি বা সি ++ প্রোগ্রামগুলি সংকলনের জন্য একটি সাধারণ কমান্ড রয়েছে:
make filename
./filename
মেক আপনার উত্স ফাইলটিকে একই নামে এক্সিকিউটেবল ফাইলে তৈরি করবে। তবে আপনি যদি স্ট্যান্ডার্ড পদ্ধতিটি ব্যবহার করতে চান, আপনি সি প্রোগ্রামের জন্য জিসিসি সংকলক এবং সি ++ এর জন্য জি ++ ব্যবহার করতে পারেন
সি এর জন্য:
gcc filename.c
./a.out
সি ++ এর জন্য:
g++ filename.cpp
./a.out
ব্যবহার ক makefile
। এমনকি খুব ছোট (= এক-ফাইল) প্রকল্পের জন্যও চেষ্টাটি সম্ভবত এটির পক্ষে উপযুক্ত কারণ আপনার কাছে পরীক্ষাগুলি সেটিংসের কয়েকটি সেট জিনিস পরীক্ষা করতে পারে। ডিবাগিং এবং স্থাপনা এই পদ্ধতিতে আরও সহজ কাজ করে।
make
ম্যানুয়ালটি পড়ুন , এটি প্রথম নজরে বেশ দীর্ঘ বলে মনে হচ্ছে তবে বেশিরভাগ অংশে আপনি কেবল স্কিম করতে পারেন। সব মিলিয়ে এটি আমাকে কয়েক ঘন্টা সময় নিয়েছে এবং আমাকে আরও বেশি উত্পাদনশীল করে তুলেছে।
আমি এই লিঙ্কটি দিকনির্দেশ সহ পেয়েছি:
http://www.wesg.ca/2007/11/how-to-write-and-compile-c-programs-on-mac-os-x/
মূলত আপনি:
gcc hello.c
./a.out (or with the output file of the first command)
gcc hello.c -o a.out
? যা একই কাজ করে gcc hello.c
।
আপনার সি / সিপিপি ফাইলটি কেবল সেই ডিরেক্টরিতে প্রবেশ করুন।
সি কোড সংকলন এবং চলমান জন্য।
$gcc filename.c
$./a.out filename.c
সি ++ কোড সংকলন এবং চলমান জন্য।
$g++ filename.cpp
$./a.out filename.cpp
"$" হ'ল ডিফল্ট ম্যাক টার্মিনাল প্রতীক
ম্যাক টার্মিনাল থেকে সিপিপি উত্স কোডটি সংকলন এবং চালনার জন্য নিম্নলিখিতটি করা দরকার:
টার্মিনালটি ব্যবহার করে একটি। সি ফাইল চালানো একটি দ্বি-পদক্ষেপ প্রক্রিয়া। প্রথম পদক্ষেপটি টার্মিনালে জিসিসি টাইপ করা এবং টার্মিনালে .C ফাইলটি ফেলে দেওয়া এবং তারপরে টিপুন Enter:
username$ gcc /Desktop/test.c
দ্বিতীয় ধাপে, নিম্নলিখিত কমান্ডটি চালান:
username$ ~/a.out
কমান্ডের নীচে চলমান সি ++ ফাইল চালানোর জন্য, ধরে নেওয়া ফাইলের নাম "main.cpp"
1. সি ++ ফাইল থেকে অবজেক্ট ফাইল করতে কম্পাইল।
g++ -c main.cpp -o main.o
২.মিনস ম্যাকসগুলিতে #include <conio.h>
সমর্থন করে না তাই আমাদের ম্যাকে এটির বিকল্পটি ব্যবহার করা উচিত যা সমর্থন করে #include <curses.h>
। এখন অবজেক্ট ফাইলকে এক্সিকিউটেবল ফাইলে রূপান্তর করা দরকার। ব্যবহার করার জন্য curses.h
আমাদের গ্রন্থাগার ব্যবহার করতে হবে -lcurses
।
g++ -o main main.o -lcurses
3.এখন এক্সিকিউটেবল চালান।
./main