انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: saeidmot در 15 اردیبهشت 1401، 04:55 بظ
-
سلام. میخواستم برنامه ای در زبانهای c وبا C شارپ و یا پایتون بنویسم که خروجی آن اجرایی باشد و کد اصلی برنامه قابل خواندن نیاشد.لطفا راهنمایی کنید.
-
خب هر چی رو که کامپایل کنید دیگه کد منبع رو نمی تونید بخونید مگر اینکه برنامه رو decompile کنید و خروجی برنامه کامپایل شده یک فایل اجرایی هست دیگه ???
-
چجوری یک برنامه پایتون یا c# رو کامپایل کنم که خروجی ما بجای یک فایل exe یا py ، یک فابل deb باشه؟
-
فایل های deb یک فایل اجرایی نیستن اونها یک فایل فشرده هستن بعد چرا فایل exe ؟
باید اول کامپایلش کنین بعد ازش یه فایل deb یا هر چیز دیگهای بسازید
-
لینک (https://www.debian.org/doc/manuals/maint-guide/)
-
فایل های deb یک فایل اجرایی نیستن اونها یک فایل فشرده هستن بعد چرا فایل exe ؟
باید اول کامپایلش کنین بعد ازش یه فایل deb یا هر چیز دیگهای بسازید
از سوالهای ناشیانه ام عذرخواهم.وقتی یک فایل c++ رو توی اوبونتو کامپایل کردم 2 تا فایل جدید ایجاد شد که یکی بدون پسوند وبه شکل چرخ دنده بود و دیگری با پسوند o بود. چجوری باید ازش یک فایل اجرایی مشابه فایلهای exe در ویندوز بسلزم.
-
اون فایل بدون پسوند فایل احرایی شماست.
-
اون فایل بدون پسوند فایل احرایی شماست.
بله جواب داد. با پایتون هم میشه همینکار رو کرد؟ آخه پایتون فقط یک فایل py داره.متشکرم
-
همون پروندهٔ py پروندهٔ اجرایی شماست
-
همون پروندهٔ py پروندهٔ اجرایی شماست
آخه میخوام نشه کدهایی که نوشتم رو خوند و فقط اجرا بشه. ولی کدهای فایل py رو توی یه editor میشه دید.
-
آخه میخوام نشه کدهایی که نوشتم رو خوند و فقط اجرا بشه. ولی کدهای فایل py رو توی یه editor میشه دید.
فکر کنم اگه بگی مقصودت چیه که راهحلش به نظرت قابل خوندن نبودن فایل بوده، بهتر میشه کمکت کرد.
-
آخه میخوام نشه کدهایی که نوشتم رو خوند و فقط اجرا بشه. ولی کدهای فایل py رو توی یه editor میشه دید.
فکر کنم اگه بگی مقصودت چیه که راهحلش به نظرت قابل خوندن نبودن فایل بوده، بهتر میشه کمکت کرد.
میخوام برنامه ام خروجی ای داشته باشه که فقط قابلیت اجرا داشته باشه و نشه کدی که من نوشتم رو ببینند.
-
متن برنامههای C با ابراز کامپایلر (https://wiki.ubuntu.ir/wiki/Compiler) به دستورات قابل فهم رایانه تبدیل میشوند.
مجموعهٔ کامپایلر gcc فایل باینری قابل اجرا روی سیستم را هم تولید میکند.
gcc code.c -o code
برنامهٔ gcc تمام کارهای لازم را برای تبدیل کد C به یک فایل باینری قابل اجرا روی همین سیستم انجام میدهد.
برنامه را در محیط پوسته با این فرمان اجرا میکنید.
./code
اما برنامههای پایتون متفاوت هستند و برای اجرا روی سیستم نیاز به مفسر دارند.
python3 prog.py
به نظر میرسد شما میخواهید از برنامهٔ پایتون یک فایل اجرایی باینری مستقل مشابه مثال در مورد C بسازید.
برای ساخت یک فایل اجرایی مستقل از برنامهٔ پایتون یک راه استفاده از بستهٔ pyinstaller است.
نمونه
نوشتن برنامه
echo "print('salam')">prog.py
cat prog.py
ساخت venv و فعال سازی
python3 -m venv env
source env/bin/activate
نصب بستهٔ pyinstaller با pip در محیط مجازی
python3 -m pip install pyinstaller
اجرای برنامهٔ pyinstaller برای ساخت فایل اجرای از روی برنامهٔ پایتون
pyinstaller --onefile prog.py
اجرای برنامه
./dist/prog
-
تشکر از راهنماببتون
-
زبانهایی مثل پایتون و php زبانهای مفسری هستند و فایل اجرایی به اون معنی بهتون نمیده بلکه مفسر در زمان اجرا فایل ورودی رو تفسیر میکنه و این بر خلاف زبانهای کامپایلی مثل سی است که کامپایل میشه و فایل اجرایی بهتون میده و واسه اجرا نیاز به مفسر نداره. هر کدوم از این روشها مزایا و معایب خودشون رو دارن. توی زبانهای مفسری مثل پایتون نیاز است که فایل اصلی باشه که مفسر بتونه اجراش کنه. هرچند روشهای واسه رمزگذاری کردن اسکریپتهای زبان های تفسیری وجود داره.
-
میخوام برنامه ام خروجی ای داشته باشه که فقط قابلیت اجرا داشته باشه و نشه کدی که من نوشتم رو ببینند.
بله. پرسشم از چرایی این کار بود. تصویر بزرگتری رو میخوام که به خاطر انجامش، داری تلاش میکنی کدت قابل خوندن نباشه…
-
چجوری یک برنامه پایتون یا c# رو کامپایل کنم که خروجی ما بجای یک فایل exe یا py ، یک فابل deb باشه؟
اگه میخواهید برای چیزی غیر از ویندوز برنامه بنویسید، بدونید با #c نمیشه؛ اگه هم بشه، آخر مثل ویندوز نیست.