উইন্ডোতে লিঙ্কযুক্ত অবজেক্ট ফাইলগুলি তৈরি করতে লিনাক্সে ইন্টেল সি / সি ++ সংকলক ব্যবহার করা সম্ভব?


12

কেন?

আপনার উত্সের উপর নির্ভর করে ইন্টেল সংকলক সম্ভবত বা সম্ভবত স্পষ্টভাবে x86 আর্কিটেকচারের জন্য দ্রুততম নির্বাহযোগ্য (5 থেকে 100% সম্পাদনের সময় উন্নতি) সংকলক তৈরি করছে is

ইন্টেল লিনাক্সের জন্য একটি অ-বাণিজ্যিক লাইসেন্সের জন্য নিখরচায় তার সংকলকগুলি অফার করে (আমার মনে হয় আমি তাদের পৃষ্ঠায় এটি কোথাও নিখরচায় পড়েছি: ইন্টেল - অ-বাণিজ্যিক সফ্টওয়্যার বিকাশ )। শিক্ষার্থীদের জন্য একটি অ-বাণিজ্যিক লাইসেন্স রয়েছে, তবে এই লাইসেন্সটি প্রযোজ্য নয় যদিও তিনটি বড় অপারেটিং সিস্টেমের জন্য সরঞ্জাম সরবরাহ করা হয় (খ্যাতি সীমাবদ্ধতার কারণে লিঙ্কটি বাদ পড়ে)।

লক্ষ্য

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

আরো বিস্তারিত:

এই দস্তাবেজটি থেকে আমি যা অনুমান করেছি তা হ'ল ইন্টেল সংকলকগুলি অবজেক্ট ফাইলগুলি তৈরি করে যা প্ল্যাটফর্মের প্রভাবশালী সংকলকগুলির সাথে সামঞ্জস্যপূর্ণ।

উপ-প্রশ্ন:

  1. উইন্ডোজ এবং লিনাক্সে (বর্তমান সংস্করণ) জিসিসি, জি ++, সিএল, মিংডব্লিউ, আইসিসি, আইসিপিসি এবং আইসিএলের অবজেক্ট ফাইল ফর্ম্যাটগুলি কী কী?
  2. লক্ষ্যটি অর্জনের জন্য মিংডব্লিউ 32 ক্রস-সংকলক সরঞ্জামচয়ের অংশগুলি ব্যবহার করা যেতে পারে?
  3. আমি কি ঠিক যে উত্পন্ন বস্তুর ফাইলগুলিতে মেটাডেটা মূল সমস্যা?

বিজ্ঞাপন 2:
মিংডব 32-অ্যাজকপিটি লিনাক্স (সম্ভবত ELF) এর ইনটেল সংকলক আউটপুটটিকে মাইক্রোসফ্ট-সামঞ্জস্যপূর্ণ সিওএফএফ (স্থানান্তরযোগ্য অবজেক্ট ফাইলগুলির সম্ভাব্য ব্যতিক্রম সহ) রূপান্তর করতে সক্ষম বলে মনে হচ্ছে। দয়া করে কেউ নিশ্চিত করতে পারেন যে এটি আসলে (অ-তুচ্ছ অ্যাপ্লিকেশনগুলির জন্য) কাজ করে?


1
+1 টি। আকর্ষণীয় প্রশ্ন।
নিল

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

মতে @tdammers WineHQ যদি আমি ভুল না করে থাকি টুলচেইন লিনাক্স উইন্ডোজ এক্সেকিউটেবল গড়ে তুলতে, mingw32 হয়।
হুগো

ইন্টেল ফোরামগুলি থেকে উত্তরটি "না" হিসাবে উপস্থিত বলে মনে হচ্ছে: সফটওয়্যার.ইন.টেল.ইন-
ফোস / ফোরামস

@ ভিটারব্রাগা আমি প্রশ্নের উত্তরটি এভাবে ব্যাখ্যা করলেন: "ইন্টেল সংকলকটি সরাসরি ক্রস-সংকলন করতে সক্ষম?" উত্তরটি "না" (এটি প্রয়োজনীয় বিকল্পগুলি এবং গ্রন্থাগারগুলি অনুপস্থিত, যতদূর আমি বলতে পারি), তবে ... কম্পিউটার আর্কিটেকচার (আইএ 32, এএমডি 64) আমার ক্ষেত্রে একই হবে এবং আমি যদি কেবল উইন্ডোজ লাইব্রেরি ব্যবহার করি লিনাক্সে প্রোগ্রামটি সংকলন করার জন্য আমি উইন্ডোজে এক্সিকিউটেবল কোড পাওয়ার আশা করবো যা উইন্ডোজ লাইব্রেরির সাথে যুক্ত হলে উইন্ডোজ এক্সিকিউটেবল তৈরি করতে পারে।
হুগো

উত্তর:


1

ক্রস-সংকলক ব্যবহার করে একটি লিনাক্স বিল্ড মেশিনে উইন্ডোজ এক্সিকিউটেবলগুলি তৈরি করা সম্ভব। তবে, ইন্টেল এ জাতীয় ক্রস সংকলক সরবরাহ করে না

উপ-প্রশ্নের উত্তর দিতে:

উইন্ডোজ এবং লিনাক্সে (বর্তমান সংস্করণ) জিসিসি, জি ++, সিএল, মিংডব্লিউ, আইসিসি, আইসিপিসি এবং আইসিএলের অবজেক্ট ফাইল ফর্ম্যাটগুলি কী কী?

অবজেক্ট ফাইলগুলির ফর্ম্যাটটি কার্যকরভাবে অপারেটিং সিস্টেম দ্বারা নির্ধারিত হয় (বা বরং এটি তৈরি করতে ব্যবহৃত সংকলক)। উইন্ডোজের জন্য এটি পোর্টেবল এক্সিকিউটেবল (পিই) ফর্ম্যাট এবং লিনাক্সের জন্য ইএলএফ ফর্ম্যাট।

লক্ষ্যটি অর্জনের জন্য মিংডব্লিউ 32 ক্রস-সংকলক সরঞ্জামচয়ের অংশগুলি ব্যবহার করা যেতে পারে?

না। প্রাসঙ্গিক অংশটি হ'ল কোড জেনারেটর, যা উভয় অংশই সঠিক অবজেক্ট ফর্ম্যাট তৈরির জন্য এবং ইন্টেল সংকলকগুলির অংশ যা তাদের উত্পন্ন কোডটিকে গতির ধার দেয়।

আমি কি ঠিক যে উত্পন্ন বস্তুর ফাইলগুলিতে মেটাডেটা মূল সমস্যা?

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


0

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

যাইহোক, আমি জানি না ইন্টেল সংকলকটির এর জন্য বিকল্প রয়েছে কিনা, আমার এটি করা উচিত বলে মনে করা উচিত।

উইন্ডোজের জন্য অবজেক্ট ফর্ম্যাটটি পিই , লিনাক্সের জন্য এটির ইএলএফ


এমএসডিএন অনুসারে : " সংকলকগণ কমন অবজেক্ট ফাইল ফর্ম্যাট (সিওএফএফ) অবজেক্ট (.obj) ফাইল তৈরি করে" "<br/>
হুগো

ঠিক আছে, এটি কার্যকর হয়নি। উইকিপিডিয়া অনুসারে পিই সিওএফএফ থেকে প্রাপ্ত এবং উভয় ফাইল ফর্ম্যাট অবজেক্ট ফাইল ফর্ম্যাট এবং এক্সিকিউটেবল ফাইল ফর্ম্যাট হিসাবে ব্যবহার করা যেতে পারে।
হুগো

0

মাইক্রোসফ্টের কাস্টম কলিং কনভেনশনগুলি ব্যবহার করে এমন কোনও কিছুর (সরাসরি) সংযোগের সাথে সি কোড যুক্ত হয়ে আপনি মিনজিডব্লু ব্যবহার করে একটি সুযোগ দাঁড়াতে পারেন objcopy। আমি এটি একত্রিত অবজেক্ট ফাইলে রূপান্তর করতে ব্যবহার করেছি, তবে তারপরে কনভেনশন কল করার বিষয়ে আমাকে চিন্তা করতে হবে না।

আপনি কেবল যা করতে চান তা করার জন্য আপনি কেবল এই সময়টি ব্যয় করতেন GC বা ঝাঁকুনির পরিবর্তে this যদি এই ধরণের গতি বাড়ানো সত্যিই গুরুত্বপূর্ণ হয় তবে লিনাক্স বাইনারিটি ইন্টেল সংকলকটির সাথে সংকলন করে এবং ঠিক কী, যদি কিছু হয় তবে এটি আপনার কোডকে গতিময় করে তোলে তা দেখার চেষ্টা করুন। সমস্ত কিছু ব্যর্থ হলে আপনি অ্যাসেমব্লিকে প্যাচ করতে পারেন।


0

আমি নিম্নলিখিত উত্তর প্রস্তাব:

প্রসঙ্গের সাথে একটি সহ একটি নির্দিষ্ট সম্ভবত (হ্যাঁর দিকে ঝুঁকানো)।

ব্যাখ্যা: "ঝুঁকুনি" অংশ সম্পর্কে: এটি চেষ্টা করার জন্য মোট সময় নষ্ট হবে না বলে মনে হচ্ছে, তবে ("" অংশ ") এই উত্তরটি বিবেচনায় নিয়ে আপনি সম্ভবত কোনও ইন্টেলের তুলনায় কার্যকর করার সময় উন্নতি পাবেন না একমাত্র সরঞ্জামচেন। সংযোগকারীটির লিঙ্কার এবং রানটাইম প্রতিক্রিয়া হিসাবে প্রাসঙ্গিক অংশ (পুরো প্রোগ্রাম অপটিমাইজেশন, প্রোফাইল-গাইডেন্সড অপটিমাইজেশন, লিংক-সময় কোড উত্পন্নকরণ)।

অতিরিক্ত বিশদ: মিনজিডাব্লিউ এফএকিউ
অনুসারে লাইব্রেরি এবং ডিএলএল ব্যবহারের ক্ষেত্রে সম্ভাব্য সমস্যা রয়েছে: "যদিও বিভিন্ন উইন্ডোজ সংকলক জুড়ে ডেলগুলি মোটামুটি বহনযোগ্য বলে মনে করা হয়, একটি লাইব্রেরি ফাইল (.lib বা .a) এর মাধ্যমে dlls অ্যাক্সেস করা যায় না। গ্রন্থাগারটি ফাইল ফর্ম্যাটগুলি নির্দিষ্ট সংকলকগুলির সাথে সুনির্দিষ্ট এবং বিভিন্ন সংকলকগুলির সাথে পোর্টেবল ব্যবহার করা যাবে না যতক্ষণ না সংকলক এর জন্য সমর্থন সরবরাহ করে "।

উত্তরটি সম্পূর্ণ করতে:
উপ-প্রশ্ন 1:

উইন্ডোজ এবং লিনাক্সে (বর্তমান সংস্করণ) জিসিসি, জি ++, সিএল, মিংডব্লিউ, আইসিসি, আইসিপিসি এবং আইসিএলের অবজেক্ট ফাইল ফর্ম্যাটগুলি কী কী?

উইন্ডোজের যে কোনও সংকলকের জন্য ডিফল্ট অবজেক্ট ফাইল ফর্ম্যাটটি সিওএফএফ (সম্ভবত পিই ভেরিয়েন্ট)। লিনাক্সের যে কোনও সংকলকের জন্য ডিফল্ট অবজেক্ট ফাইল ফর্ম্যাটটি হ'ল ইএলএফ

উপ-প্রশ্ন 2:

লক্ষ্যটি অর্জনের জন্য মিংডব্লিউ 32 ক্রস-সংকলক সরঞ্জামচয়ের অংশগুলি ব্যবহার করা যেতে পারে?

সম্ভবত হ্যাঁ (লিঙ্কিং অংশের জন্য), তবে সম্ভবত আপনি খুব বেশি কার্যকর সময় সাফল্য পাবেন না।

উপ-প্রশ্ন 3:

আমি কি ঠিক যে উত্পন্ন বস্তুর ফাইলগুলিতে মেটাডেটা মূল সমস্যা?

সংযোগ সম্পর্কিত: হ্যাঁ।

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