এক্সকোড লিঙ্কারের ত্রুটি: আর্কিটেকচারের জন্য ফাইল খুব ছোট x86_64


89

আমি এক্সকোডে একটি অ্যাপ্লিকেশন বিকাশ করছি।

আমি যখন নির্মাণের চেষ্টা করি তখন এই ত্রুটিটি উপস্থিত হয়:

ld: in /Users/theodore/Library/Developer/Xcode/DerivedData/Tower-bkpdifuqssebjdgurzmtirbxejnn/Build/Intermediates/Tower.build/Debug/Tower.build/Objects-normal/x86_64/TWRAppDelegate.o, file too small for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

কেউ কি জানে কী ভুল?


59
একটি সম্পূর্ণ পুনর্নির্মাণ / পরিষ্কার চেষ্টা করুন। এটি সম্ভবত সম্ভব যে পূর্ববর্তী বিল্ডটি অস্বাভাবিকভাবে বাতিল হয়ে গেছে, TWRAppDelegate.oফাইলটি দূষিত বা শূন্য-আকারের রেখে।
মার্টিন বাউলিগ 21

4
কিছুটা পূর্বরূপ: আপনি এটি সেমিডি + শিফট + কে দিয়ে করেন, যদি এটি কাজ না করে তবে প্রাপ্ত ডেটা ফোল্ডারে যান এবং আপনার প্রকল্প হিসাবে নামক ফোল্ডারটি মুছুন।
রামি আল জুহৌরি

4
@ রম্যআলজুহুরি: নিজেকে আর বিল্ড ফোল্ডার ট্র্যাশ করার দরকার নেই। অপশনটি ধরে রাখুন এবং ক্লিন কমান্ড (যা পণ্য মেনুতে রয়েছে) "ক্লিন বিল্ড ফোল্ডার…" এ পরিবর্তিত হয় যা এটি আপনার জন্য করে।
পিটার হোসি

মার্টিন বাউলিগের পরামর্শটি আমার সমস্যার সমাধান করেছে। ধন্যবাদ!
tbodt

4
@ পিটারক এটা আমার নিস প্রশ্ন রূপা ব্যাজ :-) আদায় হচ্ছে
tbodt

উত্তর:


192

@ মার্টিন-বাউলিগের উত্তর চুরি করা:

একটি সম্পূর্ণ পুনর্নির্মাণ / পরিষ্কার চেষ্টা করুন। এটি সম্ভব যে পূর্ববর্তী বিল্ডটি অস্বাভাবিকভাবে বাতিল হয়ে গেছে, TWRAppDelegate.o ফাইলটি দূষিত বা শূন্য-আকারের রেখে।


7
অবশেষে! আপনি এর যোগ্য.
tbodt

ধন্যবাদ! :-) ঠিক আছে, মন্তব্যে @ মার্টিন-বেলেগের উত্তর আমাকে সহায়তা করেছে, তবে আসল উত্তর হিসাবে এটি এখানে রাখাই ভাল হবে।
পিটার কে।

4
আমার প্রকল্পটি তৈরি করতে কিছুটা সময় নেয়। আপনি 1-1 অবজেক্ট ফাইলগুলি মুছে ফেলাতে দূরে যেতে পারেন যা আপনি সমস্ত কিছুর বদলে অস্বাভাবিকভাবে বিল্ডটি থামিয়ে দিলে দূষিত হয়ে যায়।
ফার্নান্দো ম্যাজন

22

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


4
আপনার উত্তর আমাকে প্রকল্পটি পুনর্নির্মাণের 10 মিনিট বাঁচায়! ধন্যবাদ
অ্যাকিড উজ্জ্বল

এই উত্তরটি শীর্ষে যেতে হবে!
টিং ই শি শি

8

স্বয়ংক্রিয়ভাবে এই সমস্যাটি সংশোধন Build Script Phaseকরতে যুক্ত করা যেতে পারে। গোটো এক্সকোড -> আপনার প্রকল্প -> আপনার লক্ষ্য -> বিল্ড পর্যায় -> + -> নতুন রান স্ক্রিপ্ট পর্যায়

এটিকে পুনরায় নামকরণ করুন Xcode Link Fixএবং এটিকে উপরের Compile Sourcesধাপে সরান । স্ক্রিপ্টের বডি এ এটি আটকান:

# Legacy build system
legacy_dir=`dirname "${LD_DEPENDENCY_INFO_FILE}"`
if [ -d "${legacy_dir}" ]; then
    find "${legacy_dir}" -size 0 | while read -d $'\n' file; do
        rm "$file"
    done
fi

# New build system
if [ -d "${OBJECT_FILE_DIR_normal}" ]; then
    find "${OBJECT_FILE_DIR_normal}" -size 0 | while read -d $'\n' file; do
        rm "$file"
    done
fi

এই স্ক্রিপ্টটি শূন্য আকারের সাথে অবজেক্ট ফাইলগুলির জন্য পরীক্ষা করে এবং সেগুলি সরিয়ে দেয় যাতে পরবর্তী ধাপে সংকলনটি সফল হলে এটি সাফল্য হয়।

আপনার যদি অনেকগুলি থাকে তবে আপনাকে প্রতিটি অ্যাপ্লিকেশন টার্গেটের জন্য এই স্ক্রিপ্টটি যুক্ত করতে হবে।

এই স্ক্রিপ্টটি চালাতে ~ 0.1 সেকেন্ড সময় নেয় এবং আপনাকে পুরো প্রকল্প পুনর্নির্মাণ থেকে বাঁচায়।


এটা জেনিয়াল! প্রতিটি প্রকল্পে থাকা প্রয়োজন।
নিক কোভ


5

আপনার টার্মিনাল অ্যাপ্লিকেশনে কেবল চালিত সেন্টিমিডি করে এই ফাইলটি সরান:

rm /Users/theodore/Library/Developer/Xcode/DerivedData/Tower-bkpdifuqssebjdgurzmtirbxejnn/Build/Intermediates/Tower.build/Debug/Tower.build/Objects-normal/x86_64/TWRAppDelegate.o


4
আমি এটি একইভাবে সমাধান করেছি, আমার বড় প্রকল্পে সম্পূর্ণ পরিষ্কার / বিল্ডের চেয়ে অনেক দ্রুত। পরের বারে আমি @ অ্যান্টন প্ল্লেবানোভিচের সমাধানটি চেষ্টা করে দেখব, এই সমাধানটি স্বয়ংক্রিয় করার একটি দুর্দান্ত উপায় হতে পারে।
রোমানো

2

সম্পূর্ণ ক্যাশে ছাড়াই ত্রুটি ঠিক করার দ্রুত উপায়:

  1. ফাইলটি ত্রুটিযুক্তভাবে বর্ণিত হয়েছে (এই প্রশ্নের ক্ষেত্রে TWRAppDelegate )
  2. সেমিডি + এ
  3. সেমিডি + এক্স
  4. পুনর্নির্মাণ - ব্যর্থ
  5. সেমিডি + ভি
  6. পুনর্নির্মাণ - সফল

1

যেহেতু একটি পরিষ্কার প্রকল্প তৈরি করা খুব দীর্ঘ সময় নিতে পারে তাদের ক্যাশে দুর্নীতিগ্রস্থ এমন ফাইলটিতে অ্যাক্সেসের জন্য আরও ছোট উপায় রয়েছে:

  • ফাইল মুছুন (রেফারেন্স সরান)
  • প্রকল্প তৈরি করুন
  • পুনরায় ফাইল প্রবেশ করুন
  • প্রকল্প তৈরি করুন

সম্পূর্ণ সংস্করণ যাতে আপনার ফাইলটি খুঁজতে কোনও সমস্যা না হয়:

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

1

আপনি কেবল TWRAppDelegate.o ফাইলটি মুছতে পারেন এবং আপনার বিল্ড চালিয়ে যেতে পারেন। ত্রুটি বার্তায় উল্লিখিত পুরো পথটি অনুলিপি করুন এবং এটি আপনার টার্মিনালে একটি 'rm' কমান্ডের পিছনে পেস্ট করুন। প্রকল্পটি থেকে ফাইলটি পরিষ্কার / পুনর্নির্মাণ, উত্পন্ন ডেটা মুছতে, ফাইল যুক্ত / সরানোর প্রয়োজন নেই etc.


-1

পদক্ষেপ 1. এ যান: প্রকল্প> বিল্ড সেটিংস> অনুসন্ধানের পথগুলি

পদক্ষেপ 2. হ্যাঁ "সর্বদা অনুসন্ধানকারীর পাথ অনুসন্ধান করুন" সেট করুন

পদক্ষেপ 3. প্রকল্পটি তৈরি করুন (আপনি একটি সতর্কতা পাবেন তবে প্রকল্পটি তৈরি করবে))

পদক্ষেপ 4. "সর্বদা অনুসন্ধানের ব্যবহারকারী পাথগুলি" না-তে ফিরে সেট করুন এবং সতর্কতাটি দূর করতে আবার তৈরি করুন


এই উত্তরটি খুঁজে পাওয়া অন্যদের জন্য এটি কেবল যুক্ত করতে পারেন। এক্সকোড ৮.৩ হিসাবে "সর্বদা অনুসন্ধান ব্যবহারকারী পাথ" অবচিত করা হয়েছে এবং দলিলপত্র থেকে এটিও বলেছে "এটি অক্ষম করার দৃ strongly়ভাবে প্রস্তাব দেওয়া হচ্ছে।" (অর্থ্যায়ে এটি সেট করা নেই)
গ্রুট

-1

একটি পরিষ্কার পুনর্নির্মাণ আমার ক্ষেত্রে হয়নি তাই আমি কীভাবে সমস্যাটি সমাধান করেছি তা ব্যাখ্যা করব:
- ফাইলটির সরিয়ে রেফারেন্স (ফাইলটি মুছবেন না)
- আবারও প্রকল্পটিতে ফাইল যুক্ত করুন এবং রান করুন


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