জিসিসি নির্মাণের সময় বিভাগ বিভাগে ফল্ট


3

আমি জিসিসি সংকলনের চেষ্টা করছি। আমি জিসিসির ওয়েবসাইট (6.৩.০ সংস্করণ) থেকে সর্বশেষতম সংস্করণটি ডাউনলোড করেছি, তবে জিসিসি তৈরি করতে আমার কিছুটা সমস্যা হচ্ছে। আমি কনফিগার স্ক্রিপ্টে নিম্নলিখিত বিকল্পগুলি দিয়ে যাচ্ছি:

configure --prefix=<location I want to install> --disable-multilib --disable-linux-futex

দ্রষ্টব্য: এটি কনফিগার বিকল্প ছাড়াই সূক্ষ্ম সংকলন করে --disable-linux-futex। আমাকে পাস করতে হবে --disable-linux-futexকারণ আমি লিখেছি যে একটি প্রোগ্রাম আমি লিখেছি ওপেনএমপি ব্যবহার করে, এবং এটি আমাকে এই বিকল্পের সাথে সংকলিত জিসিসি দরকার আমার ডিগ্রি ডিবেগ করতে ভালগ্র্যান্ড ব্যবহার করার চেষ্টা করছি। আমি টাইপ makeকরার পরে বিল্ডটি শুরু হয় এবং খুব দীর্ঘ সময়ের জন্য সফলভাবে চলে, যতক্ষণ না আমি নিম্নলিখিত ত্রুটিগুলি পাই:

make[3]: Entering directory '/home/ahanlon/packages/gcc-6.3.0-build/x86_64-pc-linux-gnu/libgcc'
# If this is the top-level multilib, build all the other
# multilibs.
# Early copyback; see "all" above for the rationale.  The
# early copy is necessary so that the gcc -B options find
# the right startup files when linking shared libgcc.
/bin/sh ../../../gcc-6.3.0/libgcc/../mkinstalldirs ../.././gcc
parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o crtprec32.o crtprec64.o crtprec80.o crtfastmath.o";                    \
for file in $parts; do                  \
  rm -f ../.././gcc/$file;      \
  /usr/bin/install -c -m 644 $file ../.././gcc/;    \
  case $file in                     \
    *.a)                        \
      ranlib ../.././gcc/$file ;;   \
  esac;                         \
done
# @multilib_flags@ is still needed because this may use
# /home/ahanlon/packages/gcc-6.3.0-build/./gcc/xgcc -B/home/ahanlon/packages/gcc-6.3.0-build/./gcc/ -B/home/ahanlon/.local/x86_64-pc-linux-gnu/bin/ -B/home/ahanlon/.local/x86_64-pc-linux-gnu/lib/ -isystem /home/ahanlon/.local/x86_64-pc-linux-gnu/include -isystem /home/ahanlon/.local/x86_64-pc-linux-gnu/sys-include    and -O2  -g -O2 -DIN_GCC    -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wno-format -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  -isystem ./include   -fpic -mlong-double-80 -DUSE_ELF_SYMVER -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector  directly.
# @multilib_dir@ is not really necessary, but sometimes it has
# more uses than just a directory name.
/bin/sh ../../../gcc-6.3.0/libgcc/../mkinstalldirs .
/home/ahanlon/packages/gcc-6.3.0-build/./gcc/xgcc -B/home/ahanlon/packages/gcc-6.3.0-build/./gcc/ -B/home/ahanlon/.local/x86_64-pc-linux-gnu/bin/ -B/home/ahanlon/.local/x86_64-pc-linux-gnu/lib/ -isystem /home/ahanlon/.local/x86_64-pc-linux-gnu/include -isystem /home/ahanlon/.local/x86_64-pc-linux-gnu/sys-include    -O2  -g -O2 -DIN_GCC    -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wno-format -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  -isystem ./include   -fpic -mlong-double-80 -DUSE_ELF_SYMVER -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector  -shared -nodefaultlibs -Wl,--soname=libgcc_s.so.1 -Wl,--version-script=libgcc.map -o ./libgcc_s.so.1.tmp -g -O2 -B./ _muldi3_s.o _negdi2_s.o _lshrdi3_s.o _ashldi3_s.o _ashrdi3_s.o _cmpdi2_s.o _ucmpdi2_s.o _clear_cache_s.o _trampoline_s.o __main_s.o _absvsi2_s.o _absvdi2_s.o _addvsi3_s.o _addvdi3_s.o _subvsi3_s.o _subvdi3_s.o _mulvsi3_s.o _mulvdi3_s.o _negvsi2_s.o _negvdi2_s.o _ctors_s.o _ffssi2_s.o _ffsdi2_s.o _clz_s.o _clzsi2_s.o _clzdi2_s.o _ctzsi2_s.o _ctzdi2_s.o _popcount_tab_s.o _popcountsi2_s.o _popcountdi2_s.o _paritysi2_s.o _paritydi2_s.o _powisf2_s.o _powidf2_s.o _powixf2_s.o _mulsc3_s.o _muldc3_s.o _mulxc3_s.o _divsc3_s.o _divdc3_s.o _divxc3_s.o _bswapsi2_s.o _bswapdi2_s.o _clrsbsi2_s.o _clrsbdi2_s.o _fixunssfsi_s.o _fixunsdfsi_s.o _fixunsxfsi_s.o _fixsfdi_s.o _fixdfdi_s.o _fixxfdi_s.o _fixunssfdi_s.o _fixunsdfdi_s.o _fixunsxfdi_s.o _floatdisf_s.o _floatdidf_s.o _floatdixf_s.o _floatundisf_s.o _floatundidf_s.o _floatundixf_s.o _divdi3_s.o _moddi3_s.o _udivdi3_s.o _umoddi3_s.o _udiv_w_sdiv_s.o _udivmoddi4_s.o cpuinfo_s.o sfp-exceptions_s.o addtf3_s.o divtf3_s.o multf3_s.o negtf2_s.o subtf3_s.o unordtf2_s.o fixtfsi_s.o fixunstfsi_s.o floatsitf_s.o floatunsitf_s.o fixtfdi_s.o fixunstfdi_s.o floatditf_s.o floatunditf_s.o fixtfti_s.o fixunstfti_s.o floattitf_s.o floatuntitf_s.o extendsftf2_s.o extenddftf2_s.o extendxftf2_s.o trunctfsf2_s.o trunctfdf2_s.o trunctfxf2_s.o getf2_s.o letf2_s.o eqtf2_s.o _divtc3_s.o _multc3_s.o _powitf2_s.o enable-execute-stack_s.o unwind-dw2_s.o unwind-dw2-fde-dip_s.o unwind-sjlj_s.o unwind-c_s.o emutls_s.o libgcc.a -lc && rm -f ./libgcc_s.so && if [ -f ./libgcc_s.so.1 ]; then mv -f ./libgcc_s.so.1 ./libgcc_s.so.1.backup; else true; fi && mv ./libgcc_s.so.1.tmp ./libgcc_s.so.1 && (echo "/* GNU ld script"; echo "   Use the shared library, but some functions are only in"; echo "   the static library.  */"; echo "GROUP ( libgcc_s.so.1 -lgcc )" ) > ./libgcc_s.so
dest=../.././gcc/include/tmp$$-unwind.h; \
cp unwind.h $dest; \
chmod a+r $dest; \
sh ../../../gcc-6.3.0/libgcc/../move-if-change $dest ../.././gcc/include/unwind.h
# Now that we have built all the objects, we need to copy
# them back to the GCC directory.  Too many things (other
# in-tree libraries, and DejaGNU) know about the layout
# of the build tree, for now.
make install-leaf DESTDIR=../.././gcc \
  slibdir= libsubdir= MULTIOSDIR=.
make[4]: Entering directory '/home/ahanlon/packages/gcc-6.3.0-build/x86_64-pc-linux-gnu/libgcc'
/bin/sh ../../../gcc-6.3.0/libgcc/../mkinstalldirs ../.././gcc
/usr/bin/install -c -m 644 libgcc_eh.a ../.././gcc/
chmod 644 ../.././gcc/libgcc_eh.a
ranlib ../.././gcc/libgcc_eh.a
ranlib: /usr/lib/libLLVM-3.9.so: symbol _ZNSt28__atomic_futex_unsigned_base19_M_futex_notify_allEPj, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference

make[4]: *** [Makefile:1115: install-shared] Segmentation fault (core dumped)
make[4]: Leaving directory '/home/ahanlon/packages/gcc-6.3.0-build/x86_64-pc-linux-gnu/libgcc'
make[3]: *** [Makefile:113: all] Error 2
make[3]: Leaving directory '/home/ahanlon/packages/gcc-6.3.0-build/x86_64-pc-linux-gnu/libgcc'
make[2]: *** [Makefile:17378: all-stage1-target-libgcc] Error 2
make[2]: Leaving directory '/home/ahanlon/packages/gcc-6.3.0-build'
make[1]: *** [Makefile:23677: stage1-bubble] Error 2
make[1]: Leaving directory '/home/ahanlon/packages/gcc-6.3.0-build'
make: *** [Makefile:914: all] Error 2

দেখে মনে হচ্ছে সমস্যাটি রনলিবের সাথে রয়েছে ../.././gcc/libgcc_eh.a, তবে এটি সম্পর্কে কী করব, বা রণলিব কী করছিল বলে আমার ধারণা নেই। কোন সাহায্যের ব্যাপকভাবে প্রশংসা হবে। আমি যদি আমার সেটআপ সম্পর্কে আরও কোনও সহায়ক বিশদ দিতে পারি তবে আমাকে জানান।

উত্তর:


1

সম্ভবত একটি নির্ভরতা সমস্যা। আমি এই ত্রুটি বার্তাটি উল্লেখ করি:

ranlib: /usr/lib/libLLVM-3.9.so: প্রতীক _ZNSt28__atomic_futex_unsigned_base19_M_futex_notify_allEPj, সংস্করণ GLIBCXX_3.4.21 ফাইল libstdc ++ এ সংজ্ঞায়িত করা হয়নি। so.6 লিঙ্ক সময় রেফারেন্স সহ

সম্ভবত এটির অর্থ হ'ল আপনার গ্রন্থাগারগুলি আপনি সংকলিত সংকলক সংস্করণের সাথে মেলে না। মেকফাইলটি জিআইবিবিসিএক্সএক্সএক্স 3.4.21 সংস্করণটি খুঁজছে, যা সম্ভবত আপনার কাছে নেই।

আপনি যে সংকলনটি করছেন তার সাথে মিলে লিনাক্স আপডেট করার পরামর্শ দিন বা আপনার লাইব্রেরিগুলির সাথে মেলে এমন জিসিসির একটি পুরানো সংস্করণ ব্যবহার করুন।

আরও তথ্য এবং পরামর্শের জন্য এই উবুন্টু জিজ্ঞাসা পোস্টগুলি দেখুন:


1
আপনার প্রতিক্রিয়ার জন্য আপনাকে ধন্যবাদ. আমি এখনও এ নিয়ে খুব বিস্মিত হই। GLIBCXX এর অর্থ কী তা আমি সত্যিই বুঝতে পারি না। আপনি কি এমন কোনও উত্স সম্পর্কে জানেন যেখানে আমি এই বিষয়গুলি সম্পর্কে আরও জানতে পারি? এছাড়াও, যখন আমি strings libstdc++.so.6আউটপুট অন্তর্ভুক্ত অন্তর্ভুক্ত GLIBCXX_3.4.21। সুতরাং, আমার সমস্ত সঠিক সংস্করণ নেই? আমি জিসিসির একটি পুরানো সংস্করণ সংকলন করার চেষ্টা করেছি এবং আমারও একই সমস্যা রয়েছে। এছাড়াও, যেহেতু আমি সফলভাবে --disable-linux-futexবিকল্পটি ছাড়াই জিসিসি সংকলন করেছি , তাতে কি আমার সমস্ত সংস্করণটি ঠিক আছে? এই বিকল্পটি সম্পর্কে কী আলাদা হতে পারে?
অ্যাডনলন

আমি পড়লাম যে আমার readelfপরিদর্শন করার জন্য ব্যবহার করা উচিত libstdc++.so.6। সুতরাং, আমি এটি চালিয়েছি, এবং আমি নিম্নলিখিতটি পেয়েছি 00000000003835c0 000011de00000007 R_X86_64_JUMP_SLOT 00000000000b96d0 _ZNSt28__atomic_futex_unsigned_base19_M_futex_notify_allEPj@@GLIBCXX_3.4.21 + 0। এটি সংস্করণগুলি সঠিক বলে মনে হচ্ছে ...
অ্যাডনলন

আমি মনে করি কোনওভাবে গ্রন্থাগারের মিশ্রণ রয়েছে, সম্ভবত পরিবেশের ভেরিয়েবলের কারণে ঘটে। কিছু গোয়েন্দা কাজের প্রয়োজন হবে। আরও ধারণার জন্য এই পোস্টটি দেখুন ।
harrymc

আমি আরও কিছু তদন্ত করব এবং আপনার কাছে ফিরে যাব। এ পর্যন্ত আপনার সাহায্যের জন্য ধন্যবাদ।
অ্যাডনলন

আপডেট: সম্ভবত এটি সুস্পষ্ট ছিল, তবে আমি স্থির করেছিলাম যে libstdc++.so.6ত্রুটি হিসাবে চিহ্নিত হওয়াটি আমার সিস্টেমে ইনস্টল করা নয় /usr/lib, তবে এটি আমার জিসিসি বিল্ড ডিরেক্টরিতে পাওয়া যায় (আমি ধরে নিয়েছি এটি সংকলনের আগে নির্মিত হয়েছিল) প্রক্রিয়ার মধ্যে)। তাহলে, আমি কি এই ভেবে সঠিক যে এই বিষয়ে আমার কোনও নিয়ন্ত্রণ নেই? এটি সংকলনের সময় নির্মিত হচ্ছে এবং এটি একটি বাগ?
অ্যাডনলন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.