ورود

View Full Version : کامپایل QT به صورت استاتیک



moonDark
سه شنبه 08 اسفند 1391, 07:41 صبح
سلام خدمت دوستان
من بالاخره بعد از کلی دانلود تونستم از QT بهره ببرم ولی یه مشکل هست اینکه فایل اجرایی تولید شده قابل حمل نیست و باید همراه با تمام DLL های QT باشه تا اجرا بشه
میخاستم بدونم که میشه QT رو به صورت استاتیک کامپایل کرد یا کاری کرد که به اون dll ها نیازی نباشه و برنامه قایل حمل و فقط یک فایل اجرایی باشه؟؟ یعنی میشه؟ عایا؟:لبخند::لبخند::لبخند:

UfnCod3r
سه شنبه 08 اسفند 1391, 08:03 صبح
میشه ولی نیازی نیست ! باید کیوتی رو استاتیک کامپیل کنی !
بجز کیوتی به یه سری دی ال ال های دیگه نیاز داره ! مثلا اگه با MVC++10 کامپیل شده باشه به msvcrt10.dll و .. نیاز داره !
البته با نصب Visual C++ 2010 Runtime Files اون دی ال ال ها میرن تو شاخه ویندوز و دیگه نیاز نیست کنار هر فایل کپی شده باشه !
شما اگه برنامه های دیگه رو نگاه کنی می بینی که کلی دی ال ال کنارشون هست !
با استاتیک کامپایل کردن حجم فایل اگزت میره بالا و درضمن زمان کامپایل هم بیشتر طول میکشه !
شما یه فولدر درست کن و دی ال ال های کیوتی و ... رو بزار داخلش !
درضمن دی ال ال های کیوتی باید کنارش باشه ! به خاطر لایسنسش !

returnx
سه شنبه 08 اسفند 1391, 08:50 صبح
فکر نمیکنم چند تا DLL که روی هم میشن چند ده مگابایت (البته برای نسخه 4.8) مشکلی وجود داشته باشه ، در حالی که اینکار Portable بودن برنامتون را هم تا حد زیادی تضمین می کند ، حالا شما این رو با دات نت چند صد مگابایتی که حتما باید روی سیستم مقصد نصب باشد مقایسه کنید!!

moonDark
سه شنبه 08 اسفند 1391, 12:11 عصر
خوب حجم این DLL هایی که میگید 200 مگه!! و فایل exe به همشون نیاز داره من از QT5 استفاده میکنم حیفم میاد اون 700 مگی که دانلود کردمو بزارم کنار ... پس کتابخانه های دیگه چه طوری به صورت استاتیک کامپایل میشن؟ مثل wxwidgets یا fltk همشون هم رایگان و منبع باز هستن و نیازی به لایسنس ندارن
تو سایتش یه چیزایی در این باره نوشته بود همه کارا رو هم سعی کردم انجام بدم ولی بعضی فایلا که نیاز به تغغیر داشتن پیدا نکردم ...

حامد مصافی
سه شنبه 08 اسفند 1391, 15:08 عصر
200مگ؟
فایل‌های اصلی برای اکثر پروژه‌ها حدود ۱۰ مگابایت هستند و در صورت صلاحدید می‌توانید ۲۰ مگابایت فایل‌های انتخابی را که ممکن است روی سیستم کاربر موجود نباشند (فایل های مربوط به یونیکد) را توزیع کنید.

moonDark
سه شنبه 08 اسفند 1391, 17:14 عصر
من وقتی روی حالت ریلیز کامپایل میکنم بعد که میرم تو پوشه پروژه فایل اجرایی رو خودم اجرا کنم ارور میده میگه فلان dll نیست بعد من یکی یکی اون DLL هایی رو که میخاد کپی میکنم کنار فایل اجرایی ولی بازم میگه کم داره ولی وقتی تمام dll های پوشه qt5.0.0/bin رو میریزم کنار exe اجرا میشه

returnx
سه شنبه 08 اسفند 1391, 17:59 عصر
من وقتی روی حالت ریلیز کامپایل میکنم بعد که میرم تو پوشه پروژه فایل اجرایی رو خودم اجرا کنم ارور میده میگه فلان dll نیست بعد من یکی یکی اون DLL هایی رو که میخاد کپی میکنم کنار فایل اجرایی ولی بازم میگه کم داره ولی وقتی تمام dll های پوشه qt5.0.0/bin رو میریزم کنار exe اجرا میشه
نیاز نیست همه ی DLL هارا کنار برنامتون بزارید!!! فقط همون هایی که در پروژتون استفاده شده را بزارید ، همونایی که در هنگام خطا میگه...

moonDark
چهارشنبه 09 اسفند 1391, 14:38 عصر
منم همین کارو میکنم ولی خطا نمیده به جاش اجرا نمیشه ولی وقتی همون فایلو میزارم کنار تمام dll ها قشنگو سریع اجرا میشه من وقتی اینا رو میزارم کنار برنامه و اجراش میکنم هیچ خطایی نمیاد ولی فرم برنامه نمیاد و سریع میبنده ولی وقتی همه dll ها کنارش باشن یا این کنار همه dll ها باشه!! اجرا میشه
لیست dll هایی که برای حداقل جلوگیری از اروراش ریختم کنار exe:
icudt49.dll - icuin49.dll - libGLESv2.dll - icuuc49.dll - Qt5Core.dll - Qt5Gui.dll - Qt5Widgets.dll
اگه میشه کمک کنید حجم همینا هم 30 مگ شد!! اگه امکانش هست راهنمایی کنید که چه طوری به صورت استاتیک استفاده کنم

moonDark
چهارشنبه 09 اسفند 1391, 14:39 عصر
منم همین کارو میکنم ولی خطا نمیده به جاش اجرا نمیشه ولی وقتی همون فایلو میزارم کنار تمام dll ها قشنگو سریع اجرا میشه من وقتی اینا رو میزارم کنار برنامه و اجراش میکنم هیچ خطایی نمیاد ولی فرم برنامه نمیاد و سریع میبنده ولی وقتی همه dll ها کنارش باشن یا این کنار همه dll ها باشه!! اجرا میشه
لیست dll هایی که برای حداقل جلوگیری از اروراش ریختم کنار exe:
icudt49.dll - icuin49.dll - libGLESv2.dll - icuuc49.dll - Qt5Core.dll - Qt5Gui.dll - Qt5Widgets.dll
اگه میشه کمک کنید حجم همینا هم 30 مگ شد!! اگه امکانش هست راهنمایی کنید که چه طوری به صورت استاتیک استفاده کنم

houshmand
چهارشنبه 09 اسفند 1391, 16:29 عصر
این dll ها حداقل dll هایی هستند که برای نسخه release یک برنامه gui برای QT5 نیاز هست (برای کمپایلر MinGw)
icudt49.dll
icuin49.dll
icuuc49.dll
libEGL.dll
libgcc_s_sjlj-1.dll
libGLESv2.dll
libstdC++‎-6.dll
libwinpthread-1.dll
Qt5Core.dll
Qt5Gui.dll
Qt5Widgets.dll

//////////////////////////
توجه شود: که زمانی که برنامه را اجرا می کنید خودش می گویید به چه dll هایی نیاز هست
ولی به libEGL.dll اشاره نمی کند ولی اگه در مسیر جاری نباشد برنامه کرش می کند.

moonDark
پنج شنبه 10 اسفند 1391, 08:43 صبح
این dll ها حداقل dll هایی هستند که برای نسخه release یک برنامه gui برای QT5 نیاز هست (برای کمپایلر MinGw)
icudt49.dll
icuin49.dll
icuuc49.dll
libEGL.dll
libgcc_s_sjlj-1.dll
libGLESv2.dll
libstdC++‎-6.dll
libwinpthread-1.dll
Qt5Core.dll
Qt5Gui.dll
Qt5Widgets.dll

//////////////////////////
توجه شود: که زمانی که برنامه را اجرا می کنید خودش می گویید به چه dll هایی نیاز هست
ولی به libEGL.dll اشاره نمی کند ولی اگه در مسیر جاری نباشد برنامه کرش می کند.

دوست عزیز من با خود IDE کیوتی به زور کار میکنم چه برسه بخام از mingw برای qt استفاده کنم:لبخند:
خوب منم همین فایل ها رو گذاشتم کنارش که اجرا نمیشه

houshmand
پنج شنبه 10 اسفند 1391, 16:47 عصر
دوست عزیز من با خود IDE کیوتی به زور کار میکنم چه برسه بخام از mingw برای qt استفاده کنم:لبخند:
خوب منم همین فایل ها رو گذاشتم کنارش که اجرا نمیشه

از این صفحه
http://qt-project.org/downloads
این فایل را دانلود کن
Qt 5.0.1 for Windows 32-bit (MinGW 4.7, 823 MB)

(قبل از نصب می توانی برای اطمینان بیشتر نسخه های قبلی QT را پاک کنی)

مثل هر برنامه نصب دیگه ای برنامه را نصب کن

همه چیزهای مورد نیاز در این بسته هست QT creator کمپایلر MINGW و ....


QTCreator را اجرا و یک برنامه QT GUI application را شروع کنید

برنامه را برای release کمپایل کنید و ...

moonDark
پنج شنبه 10 اسفند 1391, 18:26 عصر
از این صفحه
http://qt-project.org/downloads
این فایل را دانلود کن
Qt 5.0.1 for Windows 32-bit (MinGW 4.7, 823 MB)

(قبل از نصب می توانی برای اطمینان بیشتر نسخه های قبلی QT را پاک کنی)

مثل هر برنامه نصب دیگه ای برنامه را نصب کن

همه چیزهای مورد نیاز در این بسته هست QT creator کمپایلر MINGW و ....


QTCreator را اجرا و یک برنامه QT GUI application را شروع کنید

برنامه را برای release کمپایل کنید و ...

من اینا رو بلدم مشکلم با فایل های DLLی هست که باید کنار exe باشن میخام تمام کتابخانه ها با برنامه کامپایل بشن حجم برنامه 1گیگ هم شد اشکال نداره فقط برنامه بدون DLL ها اجرا بشه مثل wxWidgets یا FLTK و ...

khavary
شنبه 12 اسفند 1391, 11:39 صبح
سلام
این فایل ها رو کنار برنامه بزار D3DCompiler_43.dll icudt49.dll icuin49.dll icuuc49.dll libEGL.dll libEGLd.dll libGLESv2.dll Qt5Core.dll Qt5Gui.dll
Qt5Widgets.dll


بعد با نرم افزار upx حجم dll بیاز پایین

upx.sourceforge.net

Stanford
شنبه 12 اسفند 1391, 23:50 عصر
شما نیاز دارید که Qt رو بصورت static کامپایل کنید، بعد از اون میتونید بصورت static برنامتون رو کامپایل کنید، جدای از اینها شما بایستی لایسنس پولی Qt رو داشته باشید، شما نمی تونید با لایسنس LGPL برنامتون رو بصورت static کامپایل کنید؛
پیشنهاد من به شما اینه که از برنامه Dependency Walker برای دونستن اینکه فایل exe به چه فایل های DLLی نیاز داره استفاده کنید و با استفاده از Install Shield یه Installer واسه برنامتون بسازید شما موظف هستید که تو Installer برنامتون نسخه Microsoft Visual C++ Runtime Library که برنامتون با اون کامپایل شده رو هم قرار بدید تا کاربر موقع نصب برنامتون اون رو هم نصب کنه، فرایند ساده ای هستش که براحتی میتونید انجامش بدید.

moonDark
یک شنبه 13 اسفند 1391, 20:29 عصر
این QT هم چقد دردسر داره نمیدونستم برای کامپایل استاتیکش باید بخریش (عجب آدمایی هستن) ولی خیلی کتابخانه های دیگه که از qt سریع ترن کاملا رایگان هستن و امکانات بعضیشون هم بیشتره شما یه یکم با fltk کار کنید میفهمید چه سرعت اجرا و حجم کمی داره ولی اسکینش زیاد جالب نیست ولی میشه کنارش از wxWidgets یا GTK+ استفاده کرد که در QT فک نکنم بشه:لبخند:
به هر حال از همتون خیلی ممنونم بابت کمکاتون :چشمک:

houshmand
یک شنبه 13 اسفند 1391, 22:15 عصر
من بر اساس راهنما توی لینوکس QT را به صورت استاتیک کمپایل کردم.

.... شما موظف هستید که تو Installer برنامتون نسخه Microsoft Visual C++ Runtime Library که برنامتون با اون کامپایل شده رو هم قرار بدید

این DLL های ویژوال استودیو را می توان با کپی هم منتقل کرد بدون نصب؟

QTcreator با visual c کمپایل شده (حتی در نسخه ای که برای mingnw است) مشکل وقتی ایجاد می شود که من می خواهم از QT در کامپیوتری استفاده کنم که دسترسی به یوزر ادمین ندارم. می خواهم با کپی از نسخه QT استفاده کنم.... یا با فلاش روی کمپیوتر های مختلف اجرا کنم.

یا بایید سورس QTCreator را دانلود کنم و مجددا با mingw کمپایل کنم؟