رفتن به مطلب
جامعه‌ی برنامه‌نویسان مُدرن ایران

جستجو در تالارهای گفتگو

در حال نمایش نتایج برای برچسب های 'preloader library in run-time'.



تنظیمات بیشتر جستجو

  • جستجو بر اساس برچسب

    برچسب ها را با , از یکدیگر جدا نمایید.
  • جستجو بر اساس نویسنده

نوع محتوا


وبلاگ‌ها

چیزی برای نمایش وجود ندارد

چیزی برای نمایش وجود ندارد

تالارهای گفتگو

  • انجمن‌های آی او استریم
    • اخبار و اعلامیه‌های سایت
    • اسناد و قوانین مرجع
    • رویداد‌ها و جلسات
    • معرفی محصولات نوشته شده‌ بومی
    • مرکز نظرسنجی جامعه‌ی برنامه‌نویسان
    • مقالات و اسناد مشاوره‌ای
    • مرکز چالش برانگیز برنامه‌نویسان
    • رمز‌های موفقیت
    • ابزار‌ها و نرم‌افزارهای کاربردی برنامه‌نویسان حرفه‌ای
  • استارتاپی و کسب‌و‌کار
    • استارتاپ‌ها
    • سرمایه گذاری
    • شتاب دهنده‌ها
    • پارک‌های علم و فناوری و مراکز رشد
    • مصاحبه با استارت‌آپ‌ها
    • قوانین حقوقی
    • داستان‌های موفقیت
    • کارآفرینان و متخصصین
    • مشاوره اجرای کسب‌وکار
    • اخبار حوزه‌ی استارتا‌پی
    • آگهی‌های استخدامی
  • زبان‌های برنامه نویسی
    • برنامه نویسی در C و ‏++C
    • برنامه نویسی با Java
    • برنامه نویسی با JavaScript
    • برنامه نویسی با Go
    • برنامه نویسی با Python
    • برنامه نویسی با Delphi
    • برنامه نویسی با Ruby
    • برنامه نویسی با VB6
  • طراحی و توسعه وب
    • برنامه نویسی در PHP
    • برنامه نویسی با Node.JS
  • طراحی و توسعه وب اپلیکیشن‌ها
    • طراحی و توسعه در Angular
    • طراحی و توسعه در React.JS
    • طراحی و توسعه در Vue.JS
  • طراحی و توسعه موبایل و اِمبِد‌ها و تلوزیون‌ها
    • برنامه نویسی تحت محصولات اپل
    • برنامه نویسی تحت محصولات گوگل
    • طراحی و توسعه تحت محصولات دیگر
  • برنامه‌نویسی سطح پایین و سیستم عامل‌ها
    • سیستم عامل‌های آزاد
    • سیستم عامل‌های تجاری
    • مباحث آموزشی مرتبط با سیستم‌عامل
  • شبکه و اینترنت
    • مباحث و منابع آموزشي
    • سوالات و مشکلات
  • بانک‌های اطلاعاتی
  • برنامه نویسی تحت محصولات اپل
  • برنامه نویسی تحت محصولات مایکروسافت
  • طراحی و توسعه تجربه کاربری (UX) و رابط کاربری (UI)
  • درخواست انجام پروژه (ویژه)
  • سوالات و مباحث عامیانه
  • سطل آشغال

Product Groups

  • کتاب‌ها و مقالات آموزشی

دسته ها

  • علمی
  • استارتاپی
  • برنامه‌نویسی
    • زبان‌های برنامه نویسی
    • معماری‌ها
  • کامپایلر و مفسر
  • محیط‌های توسعه
  • پلتفرم‌های توسعه
  • مجوز‌های نرم‌افزاری
  • فناوری‌ها
    • پردازش تصویر
    • اینترنت اشیاء
    • پردازش ابری (Cloud Computing)
    • چند سکویی (Cross-Platform)
    • بیگ دیتا (Big Data)
    • هوش مصنوعی (AI)
    • سخت افزار
    • نرم‌افزار و اپلیکیشن
    • اینترنت و شبکه
    • رمزنگاری
    • امبد‌ها (Embedded)
  • طراحی
    • تجربه کاربری
    • رابط کاربری

دسته ها

  • عمومی
  • گرافیکی
  • شبکه و ارتباطات

دسته ها

  • کامپایلر‌ها
  • محیط‌های توسعه
  • کتابخانه‌ها
  • ماژول‌ها و پلاگین‌ها
  • محصولات بومی
  • کتاب‌ها و مقالات
  • زبان‌ها و ابزار‌ها
  • طراحی و گرافیک

جستجو در ...

نمایش نتایجی که شامل ...


تاریخ ایجاد

  • شروع

    پایان


آخرین بروزرسانی

  • شروع

    پایان


فیلتر بر اساس تعداد ...

تاریخ عضویت

  • شروع

    پایان


گروه


درباره من


شماره تلفن همراه


شناسه گیت‌هاب


شناسه لینکدین


شناسه پیام رسان


شهر


آدرس پستی

1 نتیجه پیدا شد

  1. وقتی برای سیستم عامل لینوکس برنامه می نویسید باید خیلی عملگرا باشید و کدهایی که می نویسید انعطاف پذیر و قابلیت نگهداری بالایی داشته باشند. بنابراین تکنیکی که قصد معرفی اش را دارم نحوه تغییر کتابخانه استاندارد libc در زمان اجرا می باشد. تصور کنید که چنین کدی دارید... #include <stdio.h> int main(void) { puts("Hello, world!"); return 0; } همانطور که مشخص هست از تابع puts استفاده کردم که از کتابخانه های استاندارد c استفاده میکند، بنابراین اگر در آینده قصد داشته باشم که عملکرد تابع puts را تغییر بدم و به سورس اصلی هم دسترسی نداشته باشم، ویا در صورتی که به سورس هم دسترسی داشته باشم ولی امکان تغییر برنامه برای من میسر نباشد! چاره کار این هست که یک کتابخانه بنویسم که در زمان اجرا بدون اینکه برنامه اصلی متوجه شود از تابع puts که در این کتابخانه نوشته ام استفاده کنم. بنابراین کد زیر را می نویسم.... #include <stdio.h> int puts( const char* str ) { return printf("We took control over your C library! \n"); } و با دستورات زیر یک کتابخانه shared object کامپایل میکنم... > gcc -o preload_launcher preload_launcher.c > gcc -c -fPIC prelib.c > gcc -o prelib.so -shared prelib.o اکنون در صورتی که بخوام از رفتار پیش فرض تابع puts که در کتابخانه استاندارد هست استفاده کنم باید به روش زیر عمل کنم... > export LD_PRELOAD= > ./a.out Hello, world! همانطور که دید خروجی تابع با استفاده از کتابخانه استاندارد نمایش داده شد. و اکنون در صورتی که بخوام برنامه از تابع puts من که در کتابخانه prelib.so نوشتم استفاده کنه به روش زیر عمل خواهم کرد... > export LD_PRELOAD=$PWD/prelib.so > ./a.out We took control over your C library! بنابراین همانطور که مشاهده میکنید خروجی تابع از کتابخانه جدید استفاده کرد. در دستور بالا PWD$ به شاخه پیش فرض home/yourusername شما اشاره میکند در حقیقت متغیر سیستمی هست. حالا تصور کنید که یک برنامه safety critical نوشتید و در سازمان مورد نظر هم نصب وراه اندازی شده و دوره های تست راهم پشت سر گذاشته ودر حال کار هست! قطعا درآینده نیاز دارید که عملکرد بخش هایی از این برنامه را تغییر دهید، و البته به راحتی نمی توانید که برنامه را تغییر بدید و مجددا دوره تست زمان اجرا بگیرید به علت های زیادی که در نرم افزارهای حیاتی وجود دارد، بنابراین تغییر کتابخانه های بهترین روش هست(البته حتما باید خود کتابخانه جدید کاملا به صورت کامل مراحل تست را انجام داده باشه) ویا حتی تصور کنید که با یک نسخه قدیمی از لینوکس برنامه خودتون را اجرا کردید، قطعا میدونید که به روز کردن کتابخانه ها در لینوکس های قدیمی کار خیلی مشکلی هست و هر لحظه امکان داره که کرنل لینوکس از کار بیوفته! برای همین به راحتی نمی تونید کتابخانه ها را کپی کنید و به روز کنید علی الخصوص کتابخانه هایی مثل ldlinux.so , libc.so,libstdc++6.so ولی در صورتی که به اسکریپت نویسی و دستورات لینوکس اشراف داشته باشید می توانید با همین دستورات مانند export , ld, ldconfig ,... به راحتی برنامه هایی که با کامپایلرهای به روز تر کامپایل میکنید را در کرنل لینوکس های قدیمی اجرا کنید.
×
×
  • جدید...