crti.o খুঁজে পাচ্ছে না: এরকম কোনও ফাইল বা ডিরেক্টরি নেই


19

আমি যখন gcc 4.1.2 ( ftp://ftp.mirferences Services.org/sites/sourceware.org/pub/gcc/relayss/gcc-4.1.2/gcc-4.1.2.tar.bz2 ) তৈরি করতে চাই তখন আমার উবুন্টু 12.04 (x86_64)। বর্তমান সক্রিয় জিসিসি 4.6.2। আমি করেছিলাম:

./configure

তারপর

make

তবে আমি এই ত্রুটি পেয়েছি

/usr/bin/ld: cannot find crti.o: No such file or directory
collect2: ld returned 1 exit status

ওয়েব অনুসন্ধান করে মনে হচ্ছে এর অবস্থান নিয়ে সমস্যা আছে crti। এই ফাইলগুলি সিস্টেমে উপলব্ধ

# find /usr/ -name crti*
/usr/lib32/crti.o
/usr/lib/x86_64-linux-gnu/crti.o
/usr/lib/debug/usr/lib/x86_64-linux-gnu/crti.o

এছাড়াও libc6 ডেভেল প্যাকেজ ইনস্টল করা আছে

# dpkg -l | grep libc6
ii  libc6                                  2.15-0ubuntu10.3                          Embedded GNU C Library: Shared libraries
ii  libc6-dbg                              2.15-0ubuntu10.3                        Embedded GNU C Library: detached debugging symbols
ii  libc6-dev                              2.15-0ubuntu10.3                        Embedded GNU C Library: Development Libraries and Header Files
ii  libc6-dev-i386                         2.15-0ubuntu10.3                        Embedded GNU C Library: 32-bit development libraries for AMD64
ii  libc6-i386                             2.15-0ubuntu10.3                        Embedded GNU C Library: 32-bit shared libraries for AMD64
ii  libc6-pic                              2.15-0ubuntu10.3                        Embedded GNU C Library: PIC archive library

আমি কীভাবে এটি ঠিক করতে পারি?

হালনাগাদ:

এগুলি যুক্ত করার পরে

LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LIBRARY_PATH 
export LIBRARY_PATH 

সেই সমস্যার সমাধান হয়। তবে এখন আমি পেয়েছি

/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libc.so when searching for -lc
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libc.a when searching for -lc
/usr/bin/ld: i386:x86-64 architecture of input file `/usr/lib/x86_64-linux-gnu/crti.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `/usr/lib/x86_64-linux-   gnu/crtn.o' is incompatible with i386 output
collect2: ld returned 1 exit status

আমি অন্যান্য ত্রুটি পেয়ে করছি প্রায় makeinfoহচ্ছে না বর্তমান, যা হয় আমার সিস্টেমে। এই পদক্ষেপগুলি দিয়ে আপনার ত্রুটি পেতে পারে না।
gertvdijk

উত্তর:


13

এই হল বাগ launchpad রিপোর্ট, byt একটা কার্যসংক্রান্ত নেই:

32 বিট প্ল্যাটফর্মে 64 বিট প্রোগ্রাম সংকলন:

LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LIBRARY_PATH 
export LIBRARY_PATH

স্থানীয় 32 বিট জন্য:

LIBRARY_PATH=/usr/lib32:$LIBRARY_PATH
export LIBRARY_PATH

এটি আপনার .bashrc ফাইলটিতে (বা একটি কনসোল থেকে চালিত) লাইব্রেরির নতুন অবস্থান সন্ধানের জন্য জিসিসির পক্ষে যথেষ্ট।

ধন্যবাদ. আইয়েন বুকলা (আইবুক্লা) থেকে সঠিক দিকে নির্দেশ করতে।

12.10 32 বিট

hhlp@hhlp:~$ sudo find /usr/ -name crti*
/usr/lib/i386-linux-gnu/crti.o
hhlp@hhlp:~$ 

LIBRARY_PATH=/usr/lib/i386-linux-gnu:$LIBRARY_PATH 
export LIBRARY_PATH

12.10 64 বিট

hhlp@hhlp:~$ sudo find /usr/ -name crti*
/usr/lib/x86_64-linux-gnu/crti.o
hhlp@hhlp:~$ 

LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LIBRARY_PATH 
export LIBRARY_PATH

সেই সমস্যার সমাধান হয়। তবে নতুন ত্রুটি পেয়েছি। দয়া করে আসল পোস্টটি দেখুন
মাহমুদ

2
ধন্যবাদ তবে এটি দ্বিতীয় সমস্যার সমাধান ছিল না। আমি দেখতে পেলাম যে gcc.gnu.org/ML/gcc-help/2009-05/msg00238.html./configure --disable-multilib অনুসারে আমাকে স্ক্র্যাচ থেকে পুনরায় তৈরি করতে হয়েছিল এবং আপনার সহায়তার জন্য ধন্যবাদ
মাহমুদ

উবুন্টু 16.04 এবং আমার বিল্ড নিয়ে কাজ করে না।
নিক্লাস

আমি একই সমস্যার মুখোমুখি, তবে make installচূড়ান্ত পদক্ষেপ হিসাবে চলার সময় । আমি LIBRARY_PATH সেট করেছিলাম কিন্তু কোন ফল হয় নি !! যে কোনও সাহায্যের প্রশংসা করা হয়েছে
ফাইজান

1
এটি ব্যবহার করার পরে আমার সমস্যা হয়েছিল "আগের ডিরেক্টরিটি খালি LIBRARY_PATH এর কারণে বর্তমান ডিরেক্টরি LIBRARY_PATH` এ থাকা উচিত নয় Hence সুতরাং ব্যবহার করুন export LIBRARY_PATH="/usr/lib/x86_64-linux-gnu${LIBRARY_PATH+:$LIBRARY_PATH}"(বা যদি আপনি এটি খালি জানেন)export LIBRARY_PATH=/usr/lib/x86_64-linux-gnu
শিখুনের আগুন

1

আমার ক্ষেত্রে আমার কিছু Ubuntu 16.04নেই crti.o:

$ find /usr/ -name crti*

সুতরাং আমি বিকাশকারী প্যাকেজ ইনস্টল করেছি:

sudo apt-get install libc6-dev

0

আপস্রোম উত্সগুলি থেকে x86-64 এ জিসিসি 4.8 তৈরি করা আপনি 32- এবং 64-বিট উভয় লাইব্রেরি (মাল্টি-লিব অক্ষম না করা) উভয়ই নির্মাণের সমস্যাটিতে চলে। সেক্ষেত্রে আপনাকে উভয় পথ /usr/lib/x86_64-linux-gnuএবং যুক্ত করতে হবে /usr/lib32


ডিফল্টভাবে হ্যাঁ। তবে আপনি বিল্ডটি কেবল মাত্র / 64-বিটের মধ্যে সীমাবদ্ধ করতে পারেন -। / কনফিগারের জন্য multilib-list = m64 বিকল্পের সাহায্যে। আমি যখন জিসিসি ৪.৮.৫ তৈরি করি তখন এটি আমার পক্ষে কাজ করে। আমি এটি আমার উত্তরে (অংশ 3) স্ট্যাকওভারফ্লো . com/a/55703805/4807875 তেও উল্লেখ করেছি ।
আলেকজান্ডার সাময়লোভ

0

আমি আমার উবুন্টু মেশিনে জিসিসি-র একটি পুরানো সংস্করণও তৈরি করছি (৩.৪..6 একটি ৪..3.৩ মেশিনে)
আমি @ মাহমুদের - অক্ষম-মাল্টিলেব সলিউশনটি চেষ্টা করেছিলাম, কিন্তু তখন পিসিটি আমার জিসিসি ৩.৪. use ব্যবহার করার দরকার পড়েছিল তাও মনে হয়েছিল পাশাপাশি 32 বিট গ্রন্থাগারও প্রয়োজন।

সুতরাং আমি উভয় 64 বিট এবং 32 বিট লাইব্রেরিগুলিকে LIBRARY_PATH এ যুক্ত করেছি

LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:/usr/lib32:$LIBRARY_PATH 
export LIBRARY_PATH 

ওহ এবং আমি উবুন্টু 12.04 64 বাইটে আছি


1
পুরানো জিসিসি / জি ++ নিয়ে কাজ করতে আপনাকে উবুন্টুকে ভুলে যেতে হবে কারণ উবুন্টুর নতুন সংস্করণে আপনি সমস্যাটি পুরোপুরি ঠিক করতে পারবেন না এবং অন্যদিকে কোনও পুরানো উবুন্টু আর সমর্থিত নয়। আপনাকে রেহাদ্যাট ভিত্তিক সিস্টেম ব্যবহার করতে হবে। Centos 6.3 ঠিক আছে
মাহমুদ 13'14
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.