مشکل در اجرای برنامه بر روی دیگر سیستم ها (لینوکس)



  • p{direction:rtl;text-align:right;}. سلام و عرض خسته نباشید خدمت دوستان

    p{direction:rtl;text-align:right;}. راستش من کیوت رو بیشتر در لینوکس کار می کنم.

    p{direction:rtl;text-align:right;}. مشکلی که الان بهش برخورد کردم اینه که وقتی برنامه ای که با کیوت می نویسم  رو روی سیستمای لینوکسی دیگه اجرا می کنم برنامه اجرا نمیشه.

    p{direction:rtl;text-align:right;}. البته دلایلشو میدونم (صفر صفر نیستم).

    p{direction:rtl;text-align:right;}. توی ویندوز shared library ها به صورت .dll هستن و فقط کافیه dll های مربوط به برنامه رو کنار برنامه قرار بدیم. در اون صورت فایل خروجی برنامه (.exe) روی سیستم های ویندوزی دیگه هم قابل اجراست.

    p{direction:rtl;text-align:right;}. توی لینوکس هم shared library ها وجود دارند( چه چیز بدیهی گفتم) که به صورت .so هستن که البته اینجوری که من شنیدم و سرچ کردم خیلی پیشرفته تر از  dll ها توی ویندوز هستن

    p{direction:rtl;text-align:right;}. کاری که من کردم این بود که .so هایی که مربوط به برنامه‌م بود رو با دستور ldd پیدا کردم و کنار برنامه م قرار دادم. اما بازم مشکلم حل نشد و کماکان درگیر این هستم که چه جوری برنامه‌م رو میتونم روی سیستمای لینوکسی دیگه اجرا کنم.

    p{direction:rtl;text-align:right;}. کلی سرچ هم کردم البته. توی فرومای فارسی که هیچی پیدا نکردم اما منابع و فرومای انگلیسی یه چیزایی گفته بودن که هرکدومو تست کردم بازم به نتیجه نرسیدم.

    p{direction:rtl;text-align:right;}. احساس کردم سوالم خیلی ابتدایی نیست به همین دلیل اینجا مطرح کردم.

    p{direction:rtl;text-align:right;}. ممنون میشم راهنمایی کنید

    p{direction:rtl;text-align:right;}. مرسی، متشکر

    "QtExperts":http://www.qte.ir/?ref=ac112de3a0e4a788142ff16e912ae188



  • p{direction:rtl;text-align:right;}. کتابخانه‌های کیوت توی تمام توزیع‌های مدرن لینوکس وجود دارند. اگه از سیستم‌های پکیجینگ استفاده می‌کنی به قسمت پیش‌نیاز پکیج خودت، پکیج‌های کیوت رو اضافه کن. مثلا برای دبین (اوبونتو، مینت و غیره) داخل فایل کنترل یک خط به صورت زیر اضافه کن:

    @
    Depends: libqtcore4 (>= 4:4.7.0), libqtgui4 (>=4:4.7.0)
    @

    p{direction:rtl;text-align:right;}. سیستم‌های مبتنی‌بر ردهت هم به شمل مشابهی این کار رو انجام میدن. فقط سینتکس‌ش فرق داره. اگه از buildsystem گنو استفاده می‌کنی (Autotools) بهتره ماکروهای چک کردن هدرها و کتابخونه‌ها به autoconf اضافه بشن.



  • p{direction:rtl; text-align:right}. ممنون و متشکر از اینکه وقت گذاشتی
    ولی من کماکان نتونستم مشکلمو حل کنم
    میشه یه مقدار بیشتر توضیح بدی
    توزیعی که استفاده می کنم هم فدورا (ردهت بیس) هستش
    این سیستمای پکیجینگی که گفتی رو من اصلا تا حالا باهاش کار نکردم
    میشه یکی دو تا از این سیستما رو نام ببری؟!
    و اینکه گفتی از buildsystem استفاده کنم.
    چه جوری می تونم از این ویژگی استفاده کنم؟
    با اینکه بیشتر از یک ساله که کلا لینوکس کار می کنم اما تا حالا buildsystem رو حتی نشنیدم
    بازم مرسی و ممنون



  • p{direction:rtl; text-align:right}. نگران نباش در مورد لینوکس تا ده سال اول تازه‌کار به حساب میاد :D
    سیستم پکیجینگ ابزاری هست که باهاش پکیج می‌سازن و مدیریت می‌کنن. محصول نرم‌افزاری نهایی به شکل یک پکیج در میاد با فرمت .rpm که مجموعه‌ای از این پکیج‌ها یک رپوزیتوری رو تشکیل میده.

    p{direction:rtl; text-align:right}. برای ساختن پکیج‌ها توی اوبونتو از Debhelper استفاده میشه که کارها رو آسون‌تر کنه. در حالت کلی dpkg و ابزارهای مشابه هستند که کار کردن باهاشون خیلی سخته. برای ردهت تازه سخت‌تر هم میشه. چون چیزی مشابه dephelper و launchpad نداری که کارها رو برات انجام بده.

    p{direction:rtl; text-align:right}. اگه در مورد buildsystem اطلاعاتی نداری فعلا بی‌خیال شو چون خیلی سخته. خود کیوت یک build system جمع و جور داره. در واقع همون qmake که وقتی اجرا میشه makefile رو می‌سازه... نیازی نیست خودتو با چیزهای پیچیده‌تر درگیر کنی. اما اگه خواستی در موردش بخونی GNU Autotools رو سرچ کن.

    http://developerblog.redhat.com/tag/packaging/
    http://en.wikipedia.org/wiki/RPM_Package_Manager



  • p{direction:rtl; text-align:right}. اول اینکه خیلی هم صفر صفر نیستم تو لینوکس :)
    یه چیزایی از rpm و dpkg و اینا حالیم میشه
    ولی قصد من این نبود که یه پکیج مثلا .rpm درست کنم
    در واقع میخواستم یه جوری باشه که فایل باینری برنامه روی هر سیستم لینوکسی کار کنه و همه‌ی dependency ها یه جوری کنار برنامه باشه
    و اینکه از qmake صحبت کردی
    منظورت این بود که با qmake میشه یه همچین کاری کرد؟
    من میخوام یه برنامه رو ، روی ۴ تا سیستم لینوکسیه دیگه ران کنم بدون اینکه qt روی اونا نصب کنم :D
    آخرش نفهمیدم دقیقا چیکار کنم :)
    ممنون



  • That's not the Linux way...



  • ok
    thanks a lot



  • ببخشید با پای پتی میام وسط گود
    من تازه چند روزیه که با کیوت شروع به برنامه نویسی کردم (درست‌تر بگم شروع به یادگیری) و توی گنو/لینوکی هم تازه‌کارم
    اگه نمی خوای با خود کیوت پکیج بسازی بهترین کار اینه که با نوشتن یک اسکریپت همه کتابخونه های مورد نیاز رو به lsdv
    usr/lib
    کپی کنی البته فکر کنم اگه همین مسیر رو به پوشه خانگی کاربر هم اضافه کنی برنامه‌ت کار کنه



  • [quote author="william wallace" date="1370372467"]ببخشید با پای پتی میام وسط گود
    من تازه چند روزیه که با کیوت شروع به برنامه نویسی کردم (درست‌تر بگم شروع به یادگیری) و توی گنو/لینوکی هم تازه‌کارم
    اگه نمی خوای با خود کیوت پکیج بسازی بهترین کار اینه که با نوشتن یک اسکریپت همه کتابخونه های مورد نیاز رو به lsdv
    usr/lib
    کپی کنی البته فکر کنم اگه همین مسیر رو به پوشه خانگی کاربر هم اضافه کنی برنامه‌ت کار کنه[/quote]

    p{direction:rtl; text-align:right}. بهترین راه برای داغون کردن یه سیستم لینوکسی همینه که library ها رو مستقیم کپی کنی :|


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.