কী লিনাক্সে ওএসএক্স প্রোগ্রামগুলি রানযোগ্য নয়?


40

আমি জানি ওএসএক্স এবং লিনাক্সের মধ্যে অনেক পার্থক্য রয়েছে, তবে কী এগুলি একেবারে পৃথক করে তোলে, যা তাদেরকে মূলত বেমানান করে তোলে?


5
ওয়েল, আপনি লিনাক্সে ওএসএক্স প্রোগ্রামগুলি চালনার জন্য কেন আশা করবেন? এই দুটি সুনির্দিষ্ট ওএস সম্পর্কে আপনি কীভাবে প্রশ্নে তাদের উল্লেখ করতে বাধ্য করেছেন তবে অন্য কোনও ওএস নয় যা ওএসএক্স প্রোগ্রামগুলি পরিচালনা করতে পারে না?
wrosecrans

6
এটি মূলত আমার প্রশ্ন ওএসএক্স একটি ইউনিক্স কার্নেলে চলে। আমি ভাবছিলাম যে এটি সম্পর্কে অন্যান্য ইউনিক্স / লিনাক্সের তুলনায় এটি কী বিশেষ করে তোলে
ফলমারি

6
বাইনারিগুলির অভ্যন্তরে গোপন সামান্য আপেল রয়েছে যা কেবল ম্যাক মেশিনই দেখতে পাবে b
বোবোবো

সাধারণভাবে বিভিন্ন ওএস একে অপরের বাইনারি চালাতে পারে না; ইউনিক্সের আশেপাশে উত্স টার্বল হিসাবে সফ্টওয়্যার বিতরণের অনুশীলন বেড়েছে। ম্যাকস বা লিনাক্স উভয়ই এই বিষয়ে বিশেষ নয়: এটি অন্যরকমের বাইনারিগুলি চালাতে পারলে বিশেষ কিছু হবে । ওয়ারোক্রান্সের মন্তব্যে জবাব দেওয়া আরও উচ্চ-আপত্তিিত মন্তব্যটি এর বিন্দুটি পুরোপুরি অনুপস্থিত। : /
পিটার কর্ডেস

উত্তর:


56

Sepp2k উল্লিখিত হিসাবে কেবল বাইনারি ফর্ম্যাট (ম্যাচ-ও বনাম ইএলএফ) নয় পুরো এবিআই আলাদা।

উদাহরণস্বরূপ, লিনাক্স এবং ডারউইন / এক্সএনইউ (ওএস এক্সের কার্নেল) যখন সিস্কল এন্ট্রির জন্য scপাওয়ারপিসি এবং int 0x80/ sysenter/ x x অন ব্যবহার করে syscall, সেখান থেকে খুব বেশি সাধারণ কিছু নেই।

ডারউইন ম্যাক মাইক্রোকার্নেলের নেতিবাচক সিস্কেল নম্বর এবং বিএসডি মনোলিথিক কার্নেলে ইতিবাচক সিস্কেল নম্বর নির্দেশনা দেয় - xnu / osfmk / mach / syscall_sw.h এবং xnu / bsd / kern / syscalls.master দেখুন । লিনাক্সের সিস্কল নম্বরগুলি আর্কিটেকচার অনুসারে পরিবর্তিত হয় - দেখুন লিনাক্স / খিলান / পাওয়ারপিসি / অন্তর্ভুক্ত / asm / unistd.h , লিনাক্স / খিলান / x86 / অন্তর্ভুক্ত / asm / unistd_32.h , এবং লিনাক্স / খিলান / x86 / অন্তর্ভুক্ত / asm / unistd_64.h - তবে সবগুলিই অবৈধ। সুতরাং স্পষ্টতই সিস্কেল নম্বর, সিস্কাল আর্গুমেন্ট এবং এমনকি যে সাইককলগুলি বিদ্যমান তা ভিন্ন।

স্ট্যান্ডার্ড সি রানটাইম লাইব্রেরিগুলিও আলাদা; ডারউইন বেশিরভাগই ফ্রিবিএসডি'র লিবিসি-র উত্তরাধিকার সূত্রে প্রাপ্ত হয়, অন্যদিকে লিনাক্স সাধারণত গ্লিবসি ব্যবহার করে (তবে বিকল্পগুলি যেমন ইল্লিবিসি এবং ডায়েটলিবিসি এবং ইউলিবিক এবং বায়োনিক) রয়েছে।

পুরো গ্রাফিক্সের স্ট্যাকটি আলাদা কিনা তা উল্লেখ করার দরকার নেই; পুরো কোকো অবজেক্টিভ-সি লাইব্রেরিগুলি উপেক্ষা করে ওএস এক্স-এর জিইউআই প্রোগ্রামগুলি উইন্ডো সার্ভারের সাথে মাচ পোর্টগুলির সাথে কথা বলে, লিনাক্সে, জিইউআই প্রোগ্রামগুলি সাধারণত এক্স 11 প্রোটোকল ব্যবহার করে ইউএনআইএক্স ডোমেন সকেটের মাধ্যমে এক্স সার্ভারের সাথে কথা বলে। অবশ্যই ব্যতিক্রম আছে; আপনি ডারউইনে এক্স চালাতে পারেন, এবং আপনি লিনাক্সে এক্সকে বাইপাস করতে পারেন, তবে ওএস এক্স অ্যাপ্লিকেশনগুলি অবশ্যই এক্সের সাথে কথা বলবে না

ওয়াইনের মতো, যদি কেউ কাজটি করে put

  • মাচ-ও-র জন্য বাইনারি লোডার বাস্তবায়ন করা হচ্ছে
  • প্রতিটি এক্সএনইউ সিস্টেলকে আটকে রেখে উপযুক্ত লিনাক্স সিস্টেমে রূপান্তর করা
  • প্রয়োজন অনুসারে ওএস এক্স লাইব্রেরির জন্য কোরিফাউন্ডেশনের জন্য প্রতিস্থাপন রচনা
  • উইন্ডো সার্ভারের মতো ওএস এক্স পরিষেবাদিগুলির জন্য রচনা প্রতিস্থাপন প্রয়োজন অনুসারে

তারপরে লিনাক্সে "নেটিভালি" কোনও ওএস এক্স প্রোগ্রাম চালানো সম্ভব হয়েছিল। কয়েক বছর আগে কাইল মফেট লিনাক্সের জন্য একটি প্রোটোটাইপ বিনফম্ট_ম্যাচ-ও তৈরি করে প্রথম আইটেমটিতে কিছু কাজ করেছিলেন , তবে এটি কখনই সম্পন্ন হয়নি এবং আমি এর সাথে অন্য কোনও প্রকল্পের কথা জানি না।

(তাত্ত্বিকভাবে এটি বেশ সম্ভব, এবং একই রকম প্রচেষ্টা বহুবার করা হয়েছে; ওয়াইন ছাড়াও লিনাক্সের নিজেই ইউএনআইএক্স থেকে এইচপি-ইউএক্স এবং ট্রু 64 এর বাইনারিগুলি চালনার পক্ষে সমর্থন রয়েছে এবং গ্লানডিক্স প্রকল্পের পরিকল্পনা 9 নম্বরের তুলনামূলকভাবে আনতে হবে লিনাক্স।)


কারো করেছে লিনাক্সের জন্য একটি মাপক-হে বাইনারি লোডার এবং API অনুবাদক বাস্তবায়ন প্রচেষ্টা করা!

শিনহ / ম্যালোডার - গিটিহাব বাইনারি লোড করা এবং ট্র্যাকিং / সমস্ত লাইব্রেরি কল ইউজারস্পেসে অনুবাদ / অনুবাদ করার ওয়াইন-মত পদ্ধতির গ্রহণ করে। এটি সিস্কলগুলি এবং গ্রাফিকাল সম্পর্কিত সমস্ত লাইব্রেরিগুলিকে সম্পূর্ণ উপেক্ষা করে তবে অনেকগুলি কনসোল প্রোগ্রামগুলি কাজ করার জন্য যথেষ্ট।

ডার্লিং ম্যালোডারের উপর ভিত্তি করে লাইব্রেরি এবং অন্যান্য সহায়ক রানটাইম বিট যুক্ত করে।


নতুন প্রয়াসে তাদের কোনও কার্নেল কোড রাখার চেয়ে বিনফ্মটি_মিস্ক ব্যবহারের সম্ভাবনা অনেক বেশি, তাই না?
SamB

@ সাম্ব: কোন ক্রুটে বিনফ্মটি_মিস্ক হ্যান্ডলার স্থাপনের চেষ্টা করা হয়েছে? আমি মনে করি কার্নেলের অন্যান্য ইউনিক্স-এর মতো সিস্টেমে বাইনারি ফর্ম্যাটগুলি পরিচালনা করা বরং যুক্তিসঙ্গত।
প্রথম দিন

1
আমার প্রশ্ন; যদি আপনি লিনাক্সে চালনার জন্য ওএস এক্স বাইনারি অর্জন করে থাকেন তবে আপনাকে কেন ওএস এক্স গ্রন্থাগার এবং পরিষেবাগুলি পুনরায় লেখার প্রয়োজন হবে? তারা কি সেই সময়ে লিনাক্সে অপরিবর্তিত থাকবে না? এটা কি শুধু আইনী সমস্যা নিয়ে?
হুব্রো

20

কেন ওএসএক্স অ্যাপ্লিকেশনগুলি স্থানীয়ভাবে লিনাক্সে চলবে না:

সবার আগে ওএসএক্স লিনাক্সের চেয়ে আলাদা বাইনারি ফর্ম্যাট ব্যবহার করে, তাই লিনাক্স ওএসএক্সের জন্য সংকলিত বাইনারিগুলি কার্যকর করতে পারে না (এটি উইন্ডোজ বা বিএসডি-র জন্য সংকলিত বাইনারিগুলি কার্যকর করতে পারে না)।

দ্বিতীয়ত, আপনি যদি জিইউআই অ্যাপ্লিকেশনগুলির বিষয়ে কথা বলছেন তবে অ্যাপলের জিইউআই সরঞ্জামকিট কোকো এ) কেবলমাত্র ওএসএক্সের জন্য উপলব্ধ এবং খ) এক্স 11 এর শীর্ষে চলবে না।

ওএসএক্স অ্যাপ্লিকেশনগুলির জন্য কেন ওয়ানের সমতুল্য নেই:

ওয়াইন এমনকি অর্ধেক ব্যবহারের উপযোগী হওয়ার আগে অনেক কাজ করতে হয়েছিল। যেহেতু কোনও ওএসএক্স সমমানের জন্য তেমন চাহিদা নেই, তাই এখনও কেউ এ জাতীয় প্রকল্পে সমান পরিমাণ প্রচেষ্টা বিনিয়োগ করে নি।


আপনি জানেন, আমি এমনকি বুঝতে পারি নি যে ওএসএক্স / ইউনিক্স একই বাইনারি ফর্ম্যাটটি ব্যবহার করে না। আপনার কি আরও দুর্গন্ধের লিঙ্ক আছে?
ফালমারি

ফালমারি: ওএসএক্স মাচ-ও ফর্ম্যাট ব্যবহার করে, লিনাক্স ইএলএফ ব্যবহার করে ।
sepp2k

1
@ ফালমারি সমস্ত ইউনিক্স একই বাইনারি ফর্ম্যাট ব্যবহার করে না, এবং যদিও প্রায় সমস্ত আধুনিক ইএলএফ ব্যবহার করে, তবুও আপনি সাধারণত একটি ইউএনআইএক্স থেকে অন্যটিতে বাইনারি চালাতে পারবেন না। হেক, আমি মনে করি না যে ফ্রিবিএসডি এমনকি গ্যারান্টি দেয় যে আপনি x.x এর জন্য x.x বা তার বিপরীতে কোনও প্রোগ্রাম চালাতে পারবেন, যদিও ১.০ এর জন্য লিনাক্স প্রোগ্রামটি এখনও ২.6.x এ চালানো উচিত ought
পূর্বসূরি

5

লিনাক্সে ওএস এক্স অ্যাপ্লিকেশনগুলি চালিত না হওয়ার সবচেয়ে গুরুত্বপূর্ণ কারণ হ'ল এই ওএসগুলি বিভিন্ন সিস্টেমে ব্যবহৃত হয়েছিল।

পূর্ববর্তী কয়েকটি উত্তর গ্রন্থাগারগুলির উল্লেখ করেছে তবে এটি সাধারণত হয় না - কোর ফাউন্ডেশন অ্যাপল দ্বারা সিএফলাইট নামে সর্বাধিক উন্মুক্ত এবং কোনও প্ল্যাটফর্মের জন্য সহজেই বহনযোগ্য (আইটিউনসের উইন্ডোজ সংস্করণটি মূল ফাউন্ডেশনের একটি উইন্ডোজ পোর্টের শীর্ষে বসে এবং কিছু সংকলক টুইট, আপনি লিনাক্স বিতরণে ঝাঁকুনি ব্যবহার করে সরাসরি সিএফলাইট তৈরি করতে পারেন) এবং সেখানে অবজেক্ট-সি পরিবেশ, মূলত ফাউন্ডেশন এবং অ্যাপকিটকে লিনাক্স বন্দর করার জন্য উন্মুক্ত উত্সাহী প্রচেষ্টা রয়েছে, বিশেষত জিএনইউস্টেপ, ওপেনস্টেপের একটি জিএনইউ বাস্তবায়ন, যা তারিখ অ্যাপল এর কোকো এর আগে (যখন তখনও NeXT কম্পিউটার সংস্থা ছিল off

যদি কেউ নির্ধারিত হয় তবে তারা এমন একটি লোডার ডিজাইন করতে পারে যা প্রতিটি মাচ-ও সিস্টোলকে ক্যাপচার করবে এবং এটি সংশ্লিষ্ট লিনাক্স সিস্টেলে অনুবাদ করবে, পাশাপাশি সেই ওপেন-সোর্স লাইব্রেরি "কাউন্টারস "গুলিকে বাইনারিটির সাথে উপযুক্ত এবিআই অনুবাদ করে গতিশীলভাবে সংযুক্ত করবে।

এবং কেবলমাত্র আপনার তথ্যের জন্য, আপনি যদি মাচ-ও অ্যাপ্লিকেশনটির উত্স কোডটি পেতে পারেন তবে আপনি এটি পোর্ট বিবেচনা করতে পারেন এবং এটি খুব সহজ হতে পারে। উদাহরণস্বরূপ, ওএস এক্স 10.6 এর সাথে বান্ডেলযুক্ত টেক্সটএডিট অ্যাপটি কয়েকটি লাইন (অ-সমালোচক) সিএফ কোড সরিয়ে নেওয়ার পরে সরাসরি জিনুস্টেপের সাথে সংযোগ স্থাপনের পুনরায় সংমিশ্রণ করা যেতে পারে এবং লিনাক্সের অধীনে তাৎক্ষণিকভাবে উপলব্ধ (জিএন ইউস্টেপের সাথে পাঠানো টেক্সটএডিটটির উল্লেখ না করা আসলেই ছিল NeXTSTEP থেকে টেক্সটএডিট অ্যাপ্লিকেশনটির সরাসরি পুনরায় সংকলন করুন, এটি ওএস এক্সের পূর্বসূরী, এমনকি এর "© 1995 NeXT" লেবেলটি ধরে রাখবে)। টেক্সটএডিট বিএসডি লাইসেন্সের অধীনে।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.