PDA

View Full Version : برنامه نویسی در لینوکس



hi.alir
سه شنبه 16 شهریور 1389, 23:08 عصر
فایل اجرایی لینوکس چیه؟ اصلا فایل اجرایی داره؟ چطوری باید واسش برنامه نوشت؟
من با Eclipse پروژه ی Hello World خودش رو باز کردم، ولی نمی شد برنامه رو اجرا کرد.
چی کار باید بکنم؟

PC2st
سه شنبه 16 شهریور 1389, 23:58 عصر
فایل اجرائی لینوکس دارای فرمت ELF (در ویندوز دارای فرمت PE) است، پسوند خاصی ندارد (در ویندوز exe است) و فایل اجرائی لینوکس در سطوح امنیتی باید قابلیت اجرا شدن را داشته باشند. من با Eclipse کار نکرده‌ام اما برای کامپایل یک برنامهٔ ساده که در فایل progname.cpp ذخیره شده:


#include <iostream>

int main()
{
std::cout << "Hello World..." << std::endl;
return 0;
}
برای کامپایل چنین برنامهٔ ساده‌ای:


g++ -o progname progname.cppو برای اجرای آن:


./prognameزیرا با کامپایل برنامه، بطور خودکار قابلیت اجرا به آن داده می‌شود، برای دادن مجوز اجرایی به برنامه:


chmod a+x progname
--------------------
البته معمولا برای کامپایل برنامه‌ها در لینوکس از Makefileها استفاده می‌کنند.

http://en.wikipedia.org/wiki/Makefile

hi.alir
چهارشنبه 17 شهریور 1389, 00:25 صبح
راستش من می خواستم تو لینوکس Opengl کار کنم!

PC2st
چهارشنبه 17 شهریور 1389, 00:48 صبح
پس باید در حین کامپایل (یا لینک) فایل کتابخانهٔ OpenGL نیز مشخص شود، بهتر است از دستور pkg-config استفاده کنید، بطور مثال اگر از کتابخانهٔ GLUT برای کار با OpenGL استفاده می‌کنید، با دستور زیر کامپایل و لینک کنید:


g++ -o progname progname.cpp $(pkg-config --cflags --libs glut)برای اینکه دستور قبل کار کند باید بستهٔ نرم‌افزاری libglut3-dev یا freeglut3-dev (در دبیان) یا چیزی شبیه به نام آن را نصب کرده باشید.

اگر از کتابخانهٔ دیگری استفاده می‌کنید (مثلا libgl-mesa یا ...) باید مقدار دیگری به جای glut را در دستور قرار دهید، برای دیدن لیست همهٔ کتابخانه‌های قابل قبول توسط pkg-config دستور زیر را وارد کنید:


pkg-config --list-allبرای یافتن لیست کتابخانه‌های وابسته به OpenGL

pkg-config --list-all | grep glالبته کتابخانه‌های وابسته به Glib هم لیست می‌شود که از آنها صرف نظر کنید.

hi.alir
چهارشنبه 17 شهریور 1389, 00:53 صبح
اگر چند تا فایل کد داشته باشم چی؟
یا چند تا کتابخونه ی مختلف!
اگر خودم یه فایل lib نوشته باشم چی؟
جایی میشناسید که یاد داده باشه چطوری تو لینوکس یه پنجره درست کنم؟
یه عالمه ممنون :لبخند:

PC2st
چهارشنبه 17 شهریور 1389, 01:16 صبح
فرقی نمی‌کند، لیست سایر فایل‌ها را در ادامه بنویسید:


g++ -o progname main.cpp common.cpp progname.cpp $(pkg-config --cflags --libs glut xft gtk+-2.0)


اگر خودم یه فایل lib نوشته باشم چی؟

در گنو/لینوکس اینها با پسوند a یا so هستند، a برای کتابخانه‌های آرشیو (static linking) و so برای کتابخانه‌های shareشده (dynamic linking).
باید جداگانه کامپایل و سپس لینک کنید (یعنی عملیات کامپایل و لینک‌کردن را جدا کنید):
کامپایل کتابخانه و ساخت آرشیو:

g++ -static -c -o mylib.o mylib.cpp common.cpp
ar rcs mylib.a mylib.o

و سپس کامپایل برنامه با آن:


g++ -o progname progname.cpp mylib.a


در اینجا برنامه progname توسط کتابخانه mylib.a کامپایل و لینک می‌شود. اگر کتابخانه خارج از مسیر فعلی برنامه است، باید آدرس آن را بدهید یا از سوئیچ l استفاده کنید یا در موارد پیچیده‌تر از دستور pkg-config استفاده کنید.


g++ -o progname progname.cpp -lm
در اینجا lm- مشخص می‌کند که می‌خواهیم از کتابخانه math استفاده کنیم که فایل اصلی آن در دایرکتوری مربوط به کتابخانه‌ها و به نام libm.a یا libm.so است، g++ بطور پیش‌فرض از libm.so استفاده می‌کند، بنابراین برای لینک‌کردن استاتیک به کتابخانه، می‌توانید از سوئیچ static- استفاده کنید:


g++ -static -o progname progname.cpp -lm

در اینصورت بجای libm.so از libm.a استفاده شده و بصورت استاتیک به برنامه لینک می‌شود.

hi.alir
چهارشنبه 17 شهریور 1389, 01:30 صبح
من الان از windows اومدم تو ubuntu تا اینا رو امتحان کنم. اولین مشکل این که من فایل سورس رو درست کردم الان رو دسکتاب هست. چطوری باید ادرس بدم؟
البته ممنون میشم آدرس دستور های g++ رو بدید. تا من هی مزاحم شما نشم :لبخند:
یا یه IDE معرفی کنید که برنامه ها توش اجرا بشن :لبخند:
تشکر

ICEMAN
چهارشنبه 17 شهریور 1389, 01:49 صبح
فایل اجرایی لینوکس چیه؟ اصلا فایل اجرایی داره؟ چطوری باید واسش برنامه نوشت؟
من با Eclipse پروژه ی Hello World خودش رو باز کردم، ولی نمی شد برنامه رو اجرا کرد.
چی کار باید بکنم؟


راستش من می خواستم تو لینوکس Opengl کار کنم!


من الان از windows اومدم تو ubuntu تا اینا رو امتحان کنم. اولین مشکل این که من فایل سورس رو درست کردم الان رو دسکتاب هست. چطوری باید ادرس بدم؟
البته ممنون میشم آدرس دستور های g++ رو بدید. تا من هی مزاحم شما نشم :لبخند:
یا یه IDE معرفی کنید که برنامه ها توش اجرا بشن :لبخند:
تشکر

برای گرفتن جوابت تو اولین قدم به راهنمای برنامه نویسی سی مقدماتی مراجعه کن

hi.alir
چهارشنبه 17 شهریور 1389, 02:08 صبح
برای گرفتن جوابت تو اولین قدم به راهنمای برنامه نویسی سی مقدماتی مراجعه کن
جان؟
اینی که گفتید کجا میشه؟

PC2st
چهارشنبه 17 شهریور 1389, 02:10 صبح
من الان از windows اومدم تو ubuntu تا اینا رو امتحان کنم. اولین مشکل این که من فایل سورس رو درست کردم الان رو دسکتاب هست. چطوری باید ادرس بدم؟
معمولاً آدرس دایرکتوری دسکتاپ در همان دایرکتوری خانگی شماست:

~/Desktop/
بگردید یک دایرکتوری با نام مشابه خواهید یافت. اگر فایلهایی که می‌خواهید کامپایل کنید در دایرکتوری جاری است، نیازی به مشخص کردن آدرس کامل آنها (و نام دایرکتوریشان) نیست.


البته ممنون میشم آدرس دستور های g++ رو بدید. تا من هی مزاحم شما نشم :لبخند:
مستندات کامپایلر GCC (http://gcc.gnu.org/onlinedocs/gcc/)
و بطور خاص‌تر (گلچین از لینک قبل):
اختیارات و سوئیچ‌های لینکر (http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html#Link-Options)
اختیارات و سوئیچ‌های جستجو برای کتابخانه‌های و فایل‌های سرآیند (http://gcc.gnu.org/onlinedocs/gcc/Directory-Options.html#Directory-Options)
کنترل نمایش اخطارها و خطاها در حین کامپایل (http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options)

zoofa
چهارشنبه 17 شهریور 1389, 05:01 صبح
من قبلا از geany استفاده کردم. آی دی ای سبک و مناسبیه
از اینجا (http://www.geany.org/) میتونید بگیریدش واسه ویندوز هم داره. :بامزه:

البته از اون بهتر eclipse هست که خیلی قدرتمند و کاملتره که خودش امکانات اضافه کردن کتابخونه و لینک و از این چیزا رو داره.



جایی میشناسید که یاد داده باشه چطوری تو لینوکس یه پنجره درست کنم؟


برای محیط گرافیکی مثل پنجره و در :بامزه: می تونید از gtk یا qt استفاده کنید.
gtk = gnome tool kit با زبان c نوشته شده و شی گرا نیست و تابعی هست.
qt = توسعه دهندش شرکت نوکیاس و با زبان c++ نوشته شده و شی گرا می باشد.

اون که کدوم رو استفاده کنید به خودتون بستگی داره. اما gtk راحت تره و qt پبچیده تر. اما امکانات qt بهتره
مرورگر گوگل کروم نسخه ی لینوکسیش لز qt استفاده کرده.

موفق باشید.

nodet07
چهارشنبه 17 شهریور 1389, 05:21 صبح
دوست عزیز
با هرچی تو ویندوز کار میکنی با همون تو لینوکس کار کن
اول نرم افزار wine رو که تو لینوکس فایل های exe. رو اجرا میکنه نصب کن

sudo apt-get install wine

بعد فایل exe. رو روش راست کلیک کن و install with wine رو بزن
و ازش لذت ببر
فقط یادت باشه که این کامپایل میکنه و فایل .exe اجرا میکنه که باید اون فایل .exe رو که ساختی دوباره با wine بازش کنی تا بتونی برنامت رو تست کنی

hi.alir
چهارشنبه 17 شهریور 1389, 05:57 صبح
تشکر.
ولی من نمی خوام gtk یا qt یا wine و ... استفاده کنم.
جایی بیدا کردم که چیز هایی که می خوام رو آموزش داده. البته آموزش که چیز خاصی نگفته. ولی خب کار من رو را می ندازه.
فقط یه مشکل واسم مونده. اونطوری که اونجا گفته برنامه من باید اجرا بشه. ولی eclipse خطا می ده که:
Lunch failed. Binary not found
از اونجا که رو سیستم اون اقا که یاد داده اجرا شده بس مشکل از سیستم منه. باید ببینم چجوری این خطا رو برطرف کنم.
اگه می تونید کمک کنید خیلی خیلی ممنون میشم.