انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: mohammad_d در 03 مهر 1391، 09:22 بظ
-
سلام
یک سری کدهای مربوط به ربات هست که مال یک تیم خارجی معروفه و روی لینوکس پیاده سازی شده... اگر بخوایم این کدهارو بیاریم روی ویندوز دقیقا چه مراحلی لازمه؟
-
فکر میکنم فقط کافیه کامپایلرهای دو تا سیستم مشکلی با هم نداشته باشن.
مثلا اگه برنامه با سی++ استاندارد نوشته شده و توش از توابع مختص لینوکس استفاده نشده میشه اون رو توی ویندوز هم کامپایل کرد البته با یه کامپایلر استاندارد مثل ویژوال سی++. بورلند و... معمولا استاندارد نیستن. هنگام کامپایل خطا میدن به وفور ;D
-
کد سی++ هست اما برخی جاها از توابع مخصوص لینوکس استفاده کرده ، برای تبدیل اونها باید کامپایلر نوشت؟ چه باید کرد؟
-
شاید بشه با یه سری wrapper اون توابع رو تبدیل کرد به توابع معادل ویندوزی. در این مورد من اطلاعی ندارم باید سرچ بزنی.
اگه تعدادشون کمه میشه دستی عوضشون کرد.
منظورت رو از کامپایلر نوشتن نفهمیدم. یعنی یه کامپایلر مثل GCC ؟ ;)
-
چرا می خواهی ببریشون روی ویندوز!
مشکل، با لینوکس چیه؟
من برعکسشو هر کار کردم نشد :).
-
منظورم یه کامپایلر ساده بود واسه کدهای خودمون که مثلا لینک بشه به کامپایلر اصلی (مثلا gcc )
حالا نمیدونم چقدر این کار امکان پذیره؟
یا مثلا آدم بیاد یه قسمت هایی رو خودش اضافه کنه به gcc !
در مورد اینکه چرا ویندوز هم دلایل زیادی داره اما من خیلی مختصر و مفیدشو بگم در یک جمله : چون در ایران برنامه بلند مدت مشخصی وجود نداره
مثلا من الان توی این تیمم با توجه به نظرات و تفکرات خودم یه سری کارها میکنم بعد 6 ماه دیگه میرم یکی دیگه میاد جای من ، نمیتونه دوباره از صفر شروع کنه که ، باید این آش شعله قلم کارو هم بزنه ، باز اون میره باز نفر بعد و ......
بنا به دلایل امنیتی نمیتونم بیشتر از این توضیح بدم ;D
-
راستی به توابع dll توی لینوکس db یا dib یا یه همچین چیزایی میگن؟
-
به توابع dll توی لینوکس نمیدونم چی میگن ولی معادل dll توی لینوکس فایلهای so یا o هستن.
شما میخوای برنامه رو توی لینوکس بنویسی ولی بتونی روی ویندوز اجراش کنی. درست میگم؟
-
نه ، اصل مطلب اینه که :
یه تیم رباتیک خارجی اومدن اولش لینوکس رو خودشون بنا به نیازهاشون یه سری تغییراتی دادند، بعدش با زبون c++ اومدن واسه ربات هاشون کد زدن توش و آخرش اینارو رو سخت افزارهاشون پیاده سازی کردند
یه سری توابعش که استاندارده به کنار ، اما بعضی جاها اومدن و از توابع لینوکس اختصاصی خودشون استفاده کردند ، حالا من میگم اولا از کجا میشه معادل ویندوزی هر تابع لینوکسی رو پیدا کرد؟ و ثانیا چطور میشه توابعی که معدل ندارند(به دلیل استاندارد نبودن لینوکس اونها) پیاده سازی کرد ؟
چون من تا جایی که میدونم برنامه نویس دستش توی ویندوز بسته است و خیلی نمیتونه وارد لایه های پایین سیستم بشه ... حالا نمیدونم این حرف تا چقدر درسته؟
ضمنا خودمم هنوز اطلاعات دقیقتری ندارم از موضوع و فعلا فقط حرف زدیم در موردش و قراره بعد مسابقات ، یعنی از آذرماه ، روش کار کنیم واسه مسابقات جهانی که سال دیگه فروردین هست
گفتم بیام از دوستان یه سری اطلاعاتی بگیرم که اصلا این چه مبحثی میشه و اینکار شدنی هستش؟ چه مراحلی داره و ....
مخصوصا همون امکان دسترسی سطج پایین در ویندوز واسم سوال بود(البته اینجا انجمن لینوکسه ;D )
-
اون تغییراتی که اونا دادن واسه اینه که راحتتر بتونن برنامه رو بنویسن یا گسترشش بدن. هم توی لینوکس و هم توی ویندوز این کار شدنی هست و کلا کار سختی نیست.
اکثر توابع که مختص لینوکس هست یه معادل برای ویندوز دارن. البته ممکنه با دردسر کمتر یا بیشتر آدم همون کار رو انجام بده.
مثلا توی لینوکس یه هدر هست به نام unistd.h که یه سری چیزای مخصوص لینوکس رو داره. البته هدرهای دیگه هم هست. توی ویندوز هم همچین چیزایی هست مثل windows.h یا conio.h یا dos.h و... که البته هیچ کدوم از این دو دسته هدر، استاندارد ِ سی++ نیستن.
چون من تا جایی که میدونم برنامه نویس دستش توی ویندوز بسته است و خیلی نمیتونه وارد لایه های پایین سیستم بشه ... حالا نمیدونم این حرف تا چقدر درسته؟
نه این حرف درست نیست. تقریبا هیچ فرقی بین لینوکس و ویندوز نیست. فقط چیزی که هست اینه که مثلا شما توی لینوکس یه کامپایلر استاندارد که بسیار هم عالیه به صورت پیشفرض روی کامپیوترت نصبه (gcc) ولی توی ویندوز باید visual c++ رو نصب کنی. تازه بعدش هم اگه خواستی dll هایی رو اضافه کنی که بتونی ازشون استفاده کنی کلی دنگ و فنگ داره. مثلا واسه اینکه بتونی از open gl استفاده کنی باید اول dll هاشو بریزی توی system32 بعد کتابخونه هاشو اضافه کنی و بعد هم هدرهاشو. تازه بعدش میتونی برنامه بنویسی. بعدش هم اینکه شما برای یه برنامه ربات چرا نیاز به لایه های پایین سیستم داری؟ ;D
زیاد حرف زدم ;D
در کل کار نشد نداره. اگه open source هست حتما اون هدرهایی که خودشون نوشتن هم در دسترس هست و میشه فهمید چیکار میکنن و معادل ویندوزیشو پیدا کرد یا نوشت که خیلی کار سختی نیست فقط ممکنه نیاز باشه چنتا از هدرهای ویندوزی رو توابعش رو یاد بگیرید.
در ضمن اگه کمک خواستی من در حد توانم میتونم کمکتون کنم. پیغام خصوصی بده.
-
در مورد اینکه چرا ویندوز هم دلایل زیادی داره اما من خیلی مختصر و مفیدشو بگم در یک جمله : چون در ایران برنامه بلند مدت مشخصی وجود نداره
مثلا من الان توی این تیمم با توجه به نظرات و تفکرات خودم یه سری کارها میکنم بعد 6 ماه دیگه میرم یکی دیگه میاد جای من ، نمیتونه دوباره از صفر شروع کنه که ، باید این آش شعله قلم کارو هم بزنه ، باز اون میره باز نفر بعد و ......
بنا به دلایل امنیتی نمیتونم بیشتر از این توضیح بدم ;D
عزیزم برای مسابقات Ad Auction تو اسپانیا، ما با اوبونتو و فدورا کار میکردیم و هرکسی هم که میخواست وارد تیم بشه،مجبور بود که اینها رو یاد بگیره :) در ضمن اگه شما پایه رو اصولی بریزی، نفر بعدی هم توجیح میشه که گنو/لینوکس باید کار کنه. :)
-
مثلا من الان توی این تیمم با توجه به نظرات و تفکرات خودم یه سری کارها میکنم بعد 6 ماه دیگه میرم یکی دیگه میاد جای من ، نمیتونه دوباره از صفر شروع کنه که ، باید این آش شعله قلم کارو هم بزنه ، باز اون میره باز نفر بعد و ......
توی مسابقات Robocup هم بخش Simulation تعداد خیلی زیادی از تیمها از ایران هستند و تقریبا همه گنو-لینوکس استفاده میکنند. بهانه نفر بعدی دلیل خوبی برای درست انجام ندادن کارها نیست، وگرنه من مثلا باید دیگه هیچجایی گنو-لینوکس نصب نکنم، چون شاید یکی بعد از من بیاد که بلد نباشه با اون کار کنه!
-
مگه روباتها با ویندوز هم کار میکنن؟ (شوخی) ولی جداً من نه تو مسابقات ایران و نه تو مسابقات جهانی ندیدم کسی ویندوز کار کنه.