এক্সকোড বিল্ড সেটিংসে "আর্কিটেকচার" এবং "বৈধ আর্কিটেকচার" এর মধ্যে পার্থক্য কী?


112

এগুলির অর্থ কী এবং আমি কী তাদের বিভিন্ন মানতে সেট করতে পারি?

উত্তর:


113

আর্কিটেকচারগুলিই আপনি তৈরি করতে চান, বৈধ আর্কিটেকচারগুলিই আপনি আপনার কোডবেস দিয়ে বিল্ডিংয়ের কল্পনা করতে পারেন।

সুতরাং আপনি কেবল নিজের বাইনারিটি আর্মভ 7 এর জন্য তৈরি করতে চান তবে একই উত্স কোডটি আর্মভ 7 এবং আর্মভ 6 এর জন্য জরিমানা সংকলন করবে। সুতরাং VALID_ARCHS = armv6 armv7 armv7s, তবে আপনি সেট করেছেন ARCHS = armv7sকারণ আপনার কোডটি দিয়ে আপনি আসলে এটি তৈরি করতে চান

বা, অ্যাপল-এজে:

আর্চএস (আর্কিটেকচার)

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

এবং:

VALID_ARCHS (বৈধ আর্কিটেকচার)

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

উত্স: এক্সকোড বিল্ড সেটিং রেফারেন্স

অনুশীলনে, আপনি VALID_ARCHSএকা ছেড়ে যান এবং এটি পরিবর্তন করার বিষয়ে চিন্তা করবেন না, এবং ARCHSআপনি যে আর্কিটেকচারগুলি তৈরি করতে চান তা সেট করতে কেবল ঝাঁকুনি । সাধারণত, আপনি কেবলমাত্র একটি ডিবাগ বিল্ড সেট করেছেন NATIVE_ARCH, যেহেতু আপনি কেবল সেই মেশিনটির জন্য ডিবাগ সংস্করণ তৈরি করতে চান যা আপনি এটি চালনা / চালনা করছেন এবং রিলিজ আপনি যে পরিকল্পনাগুলির সমর্থন করার পরিকল্পনা করছেন তার পুরো বর্ণালী তৈরি করে।


1
@ ড্যানমুর "ফলাফলের আর্কিটেকচারের তালিকা" তৈরির সময় স্মৃতিতে সম্পন্ন করা হয়।
সালটিমুলে

3
@ onmyway133 বেশিরভাগ সময়, আপনি VALID_ARCHS চান না। আপনি যদি কেবল কয়েকটি নির্দিষ্ট স্থাপত্যের জন্য ইনলাইন asm লিখতে থাকেন তবে আপনি VALID_ARCHS পরিবর্তন করতে পারেন যে আপনার কোডটি আর কোনও আর্কিটেকচার ছাড়া আর কোনওটির জন্য নয়। বেশিরভাগ ক্ষেত্রে, যদিও এটি আপনার কাছে Xcode থেকে কেবল একটি ইঙ্গিত যা এটি নির্দেশ করে যে এটি কোন আর্কিটেকচারের জন্য তৈরি করতে পারে এবং আপনি সেখান থেকে আপনার আর্কস-এর জন্য বাছাই করেন।
জেরেমি ডব্লিউ শেরম্যান

4

অ্যাপল ডকুমেন্ট থেকে, আমরা জানি যে বাইনারি এক্সকোডটি তৈরি করবে এটি তালিকাটিকে Valid Architectures ছেদ করা তালিকা Architectures

সুতরাং, আমি জেরেমির উত্তর সঠিক বলে মনে করি না, যেমনটি তিনি বলেছেন:

সুতরাং আপনি কেবল নিজের বাইনারিটি আর্মভ 7 এর জন্য তৈরি করতে চান তবে একই উত্স কোডটি
আর্মভ 7 এবং আর্মভ 6 এর জন্য জরিমানা সংকলন করবে । সুতরাং VALID_ARCHS = armv6 armv7 armv7s, তবে আপনি ARCHS = আর্মভ set গুলি সেট করেছেন কারণ আপনার কোডটি দিয়ে আপনি আসলে এটিই তৈরি করতে চান।

যখন আপনি সেট VALID_ARCHS = armv6 armv7 armv7sএবং সেট করেন ARCHS = armv7s, তখন বাইনারি এক্সকোডের ফলাফলটি আর্মভ s এস হয়। এটি আর্মভি / / আর্মভ with এর সাথে সামঞ্জস্য করতে পারে না।

এবং যদি আপনি আর্মভি 6 / আর্মভি 7 / আর্মভি 7 এর সাথে সামঞ্জস্য করতে চান - আপনার অবশ্যই সেট করা উচিত VALID_ARCHS = armv6 armv7 armv7sএবং ARCHS = armv6। এই পদ্ধতিতে, বাইনারি এক্সকোডের ফলাফলটি আর্মভি 6 তৈরি করবে এবং আর্ম প্রসেসর পিছনের দিকের সাথে সামঞ্জস্যপূর্ণ হওয়ায় এটি উভয় আর্মভি 6 / আর্মভি 7 / আর্মভি 7 উপর সূক্ষ্মভাবে চলতে পারে it ।


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