3

I'm trying to compile gcc. I downloaded the latest version from the GCC website (version 6.3.0), but I'm having some trouble building gcc. I am passing the following options to the configure script:

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

Note: This compiles fine without the configure option --disable-linux-futex. I need to pass --disable-linux-futex because I'm trying to use valgrind to debug a program I wrote that makes use of OpenMP, and they tell me I need GCC compiled with that option. After I type make the build begins and runs successfully for a very long time, until I get the following errors:

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

It seems the issue is with ranlib on ../.././gcc/libgcc_eh.a, but I don't have a clue what to do about it, or what ranlib is supposed to be doing. Any help would be greatly appreciated. Let me know if I can give any more helpful details about my setup.

1
+100

Probably a dependency problem. I refer to this error message :

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

This probably means that your libraries do not match the compiler version you are compiling. The makefile is looking for GLIBCXX version 3.4.21, which apparently you do not have.

I suggest to either update Linux to match the GCC version you are compiling, or use an older version of GCC that matches your libraries.

For more information and suggestions see these Ask Ubuntu posts :

  • 1
    Thank you for your response. I'm still very puzzled over this. I don't really even understand what GLIBCXX means. Do you know of any sources where I can learn more about these things? Also, when I do strings libstdc++.so.6 the output includes GLIBCXX_3.4.21. So, don't I have all the correct versions? I tried compiling an older version of GCC, and I have the same issue. Also, since I have successfully compiled GCC without the --disable-linux-futex option, wouldn't that suggest all my versions are right? What could be different about that option? – adhanlon Feb 5 '17 at 21:19
  • I read that I should be using readelf to inspect libstdc++.so.6. So, I ran that, and I found the following 00000000003835c0 000011de00000007 R_X86_64_JUMP_SLOT 00000000000b96d0 _ZNSt28__atomic_futex_unsigned_base19_M_futex_notify_allEPj@@GLIBCXX_3.4.21 + 0. This also seems to suggest the versions are correct... – adhanlon Feb 5 '17 at 21:44
  • I think somehow there is mix of libraries, maybe caused by environment variables. Some detective work will be needed. See this post for more ideas. – harrymc Feb 5 '17 at 23:28
  • I will do some more investigating and get back to you. Thanks for your help so far. – adhanlon Feb 6 '17 at 5:41
  • Update: Maybe this was obvious, but I determined that the libstdc++.so.6 referred to in the error is not the one installed in my system in /usr/lib, but is the one that I find in my gcc build directory (I assume it is being built earlier in the compilation process). So, am I correct in thinking that I have no control over this? That this is being built during compilation, and this is a bug? – adhanlon Feb 6 '17 at 23:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.