আপনি কীভাবে পুরনো জিসিসি সংস্করণ তৈরি করেন? Crti.o সম্পর্কে ত্রুটিগুলি পাওয়া যাচ্ছে না


10

আমি কীভাবে উবুন্টু ১১.১০-তে একটি পুরনো জিসিসি (বিশেষত, ৪.২.২) তৈরি করতে পারি এবং "/ usr / bin / ld: সম্পর্কে crti.o খুঁজে পাচ্ছি না: এই জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই"?

আমি কিছুটা খনন করেছি এবং বেশ কয়েকটি অনুরূপ আইটেম পেয়েছি, তবে আসলেই আমার সমস্যাটি সমাধান করে না:

  • আমি আমার সমস্ত প্যাকেজগুলি (libc6-dev এবং এর মতো) যাচাই করেছি এই প্রশ্নটি অনুসারে পুনরায় ইনস্টল করা হয়েছে
  • আমি crti.o যাচাই করেছি / usr / lib32 এবং / usr / lib / x86_64-linux-gnu- তে বিদ্যমান এবং আমার ld.so.conf directories ডিরেক্টরিগুলি দেখতে কনফিগার করা হয়েছে
  • আমি যাচাই করেছি যে LIBRARY_PATH = / usr / lib / x86_64-linux-gnu এর সাথে আমার করা অনুরোধের প্রস্তুতি নেওয়া হয়েছে, তবে এটি এড়াতে চাই (এটি মেকফাইলে একটি বিচ্যুত বিন্দু হয়ে ওঠে)
  • আমি - বিল্ড-সিস্রুট সহ বিভিন্ন জিনিস চেষ্টা করেছি, তবে কোনও সাফল্য ছাড়াই (পড়ুন: সম্ভবত আমি ঠিক সেট করতে সঠিক পতাকাটি জানি না)
  • স্ট্রেস দিয়ে চলার সময় ( এই উত্তর হিসাবে ), আমি crti.o এর খালি রেফারেন্স দেখতে পাচ্ছি:

    13240 খোলা ("crti.o", O_RDONLY) = -1 উত্স (এ জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই)

ধন্যবাদ!

উত্তর:


7

আমারও একই সমস্যা ছিল। থেকে সিম্বলিক লিংক মেকিং /usr/libs/crt?.o থেকে /usr/lib/x86_64-linux-gnu/crt?.oআমার জন্য সমস্যার সমাধান।


হ্যাঁ, এটি কাজ করে। আমি অন্তর্নিহিত ফাইল স্ট্রাকচারের সাথে মশকির চেয়ে জিসিসি ইনস্টলেশনটি টুইটার করার পাশাপাশি আরও একটি সমাধানের প্রত্যাশা করছিলাম, যদিও ...
ম্যাট

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

10

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

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

ইতিমধ্যে, সফ্ট লিঙ্কগুলি তৈরি করা একটি ভাল ফিক্সআপ:

cd /usr/lib
ln -s x86_64-linux-gnu/crt*.o .

(32-বিট ইনস্টলেশনতে ফোল্ডারের নাম আলাদা হবে)।

আশা করি এইটি কাজ করবে.


এটি বহুমুখী হওয়ার বিষয়ে বিষয়টির জন্য ধন্যবাদ। আমি "কেন" এটির কাজটি বন্ধ করার বিষয়ে রেজোলিউশনের আশা করছিলাম।
ম্যাট

2

আমি এই সমস্যাটি বেশ কয়েকটি কাজের সমাধানের সাথে সমাধান করেছি যা আপনার পক্ষে কার্যকর হতে পারে।

প্রথমে জিসিসি তৈরি করুন LIBRARY_PATH=/usr/lib/x86_64-linux-gnu, যাতে বিল্ড বুটস্ট্র্যাপ প্রক্রিয়াটি crt?.oশুরু ফাইলগুলি কোথায় সন্ধান করতে পারে তা জানে ।

তারপর, পরিবর্তে তৈরীর crt?.oমধ্যে symlinks /usr/libযেখানে তারা আপনার পুরো সিস্টেমের প্রভাবিত, সেখানে আপনি সেই তিন ফাইল মধ্যে সিমবলিক লিঙ্ক করতে ${prefix}/lib/gcc/...ডিরেক্টরির সংশ্লিষ্ট ${prefix}/binযে ডিরেক্টরি gccএক্সিকিউটেবল মধ্যে ইনস্টল করা হয়। এটা আসলে প্রায় শুরু ফাইলের জন্য তার সন্ধানের পাথ উপরের, তাই এটি তাদের খুঁজে পাবে - তবে তারা অন্য কোনও কিছুকে প্রভাবিত করে না।

আমার ক্ষেত্রে, এগুলি নির্দিষ্ট করার জন্য নির্দিষ্ট ডিরেক্টরিটি ছিল lib/gcc/x86_64-unknown-linux-gnu/4.3.2/; আপনি সঠিকটি খুঁজে পেতে পারেন কারণ এতে ইতিমধ্যে এর মতো অন্যান্য ফাইল রয়েছে crtbegin.o


1

আমি উবুন্টু সুনির্দিষ্ট x86_64- তে জিসিসি 4.1.2 তৈরি করেছি। আপনি যেমনটি করেছিলেন, আমি নীচে 32 বিট সি রানটাইম, গ্রেপ-প্যাড / 32 / সন্ধান করে সর্বশেষ কমান্ড "xgcc" এর স্ট্র্রে একবার দেখেছি। খনিতে সি রানটাইমটি / usr / lib32 এ রয়েছে যা libc6-dev-i386 প্যাকেজ সরবরাহ করে।

fgrep /32/ strace-output.txt | grep /usr/lib | head -1
access("/usr/lib/gcc/x86_64-unknown-linux-gnu/4.1.2/32/crti.o", R_OK) = -1 ENOENT (No such file or directory)

সুতরাং, আমি xgcc ডিরেক্টরিতে crt? .O প্রতিলিপি তৈরি করেছি।

sudo mkdir -p /usr/lib/gcc/x86_64-unknown-linux-gnu/4.1.2/32
cd /usr/lib/gcc/x86_64-unknown-linux-gnu/4.1.2/32
sudo ln -s /usr/lib32/crt1.o 
sudo ln -s /usr/lib32/crtn.o 
sudo ln -s /usr/lib32/crti.o 

আমি এটির সাথে সফলভাবে জিসিসি ৪.১.২ তৈরি করেছি।

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