LINUX.ORG.RU

Ошибка компиляции libstdc++ во время установки LFS

 , ,


0

1

Во время компиляции libstdc++ вылезла ошибка:

lfs@DaniilPC /mnt/lfs/sources/gcc-13.2.0/libstdc++-v3/build $ make
make "AR_FLAGS=" "CC_FOR_BUILD=" "CC_FOR_TARGET=" "CFLAGS=-g -O2" "CXXFLAGS=" "CFLAGS_FOR_BUILD=" "CFLAGS_FOR_TARGET=" "INSTALL=/usr/bin/install -c" "INSTALL_DATA=/usr/bin/install -c -m 644" "INSTALL_PROGRAM=/usr/bin/install -c" "INSTALL_SCRIPT=/usr/bin/install -c" "LDFLAGS=" "LIBCFLAGS=" "LIBCFLAGS_FOR_TARGET=" "MAKE=make" "MAKEINFO=/bin/sh /mnt/lfs/sources/gcc-13.2.0/missing makeinfo " "SHELL=/bin/sh" "RUNTESTFLAGS=" "exec_prefix=/usr" "infodir=/usr/share/info" "libdir=/usr/lib" "includedir=/usr/include" "prefix=/usr" "tooldir=" "gxx_include_dir=/tools/x86_64-pc-linux-gnu/include/c++/13.2.0" "AR=x86_64-pc-linux-gnu-ar" "AS=x86_64-pc-linux-gnu-as" "LD=/usr/x86_64-pc-linux-gnu/bin/ld" "RANLIB=x86_64-pc-linux-gnu-ranlib" "NM=/usr/bin/nm -B" "NM_FOR_BUILD=" "NM_FOR_TARGET=" "DESTDIR=" "WERROR=" all-recursive
make[1]: вход в каталог «/mnt/lfs/sources/gcc-13.2.0/libstdc++-v3/build»
Making all in include
make[2]: вход в каталог «/mnt/lfs/sources/gcc-13.2.0/libstdc++-v3/build/include»
make[2]: Цель «all» не требует выполнения команд.
make[2]: выход из каталога «/mnt/lfs/sources/gcc-13.2.0/libstdc++-v3/build/include»
Making all in libsupc++
make[2]: вход в каталог «/mnt/lfs/sources/gcc-13.2.0/libstdc++-v3/build/libsupc++»
make[2]: Цель «all» не требует выполнения команд.
make[2]: выход из каталога «/mnt/lfs/sources/gcc-13.2.0/libstdc++-v3/build/libsupc++»
Making all in src
make[2]: вход в каталог «/mnt/lfs/sources/gcc-13.2.0/libstdc++-v3/build/src»
Making all in c++98
make[3]: вход в каталог «/mnt/lfs/sources/gcc-13.2.0/libstdc++-v3/build/src/c++98»
make[3]: Цель «all» не требует выполнения команд.
make[3]: выход из каталога «/mnt/lfs/sources/gcc-13.2.0/libstdc++-v3/build/src/c++98»
Making all in c++11
make[3]: вход в каталог «/mnt/lfs/sources/gcc-13.2.0/libstdc++-v3/build/src/c++11»
make[3]: Цель «all» не требует выполнения команд.
make[3]: выход из каталога «/mnt/lfs/sources/gcc-13.2.0/libstdc++-v3/build/src/c++11»
Making all in c++17
make[3]: вход в каталог «/mnt/lfs/sources/gcc-13.2.0/libstdc++-v3/build/src/c++17»
make[3]: Цель «all» не требует выполнения команд.
make[3]: выход из каталога «/mnt/lfs/sources/gcc-13.2.0/libstdc++-v3/build/src/c++17»
Making all in c++20
make[3]: вход в каталог «/mnt/lfs/sources/gcc-13.2.0/libstdc++-v3/build/src/c++20»
/bin/sh ../../libtool --tag CXX --tag disable-shared   --mode=compile x86_64-pc-linux-gnu-g++ -I/mnt/lfs/sources/gcc-13.2.0/libstdc++-v3/../libgcc -I/mnt/lfs/sources/gcc-13.2.0/libstdc++-v3/build/include/x86_64-pc-linux-gnu -I/mnt/lfs/sources/gcc-13.2.0/libstdc++-v3/build/include -I/mnt/lfs/sources/gcc-13.2.0/libstdc++-v3/libsupc++   -std=gnu++20 -prefer-pic -D_GLIBCXX_SHARED -fno-implicit-templates  -Wall -Wextra -Wwrite-strings -Wcast-qual -Wabi=2  -fdiagnostics-show-location=once   -ffunction-sections -fdata-sections  -frandom-seed=tzdb.lo  -fimplicit-templates  -fcf-protection -mshstk -I. -c ../../../src/c++20/tzdb.cc
libtool: compile:  x86_64-pc-linux-gnu-g++ -I/mnt/lfs/sources/gcc-13.2.0/libstdc++-v3/../libgcc -I/mnt/lfs/sources/gcc-13.2.0/libstdc++-v3/build/include/x86_64-pc-linux-gnu -I/mnt/lfs/sources/gcc-13.2.0/libstdc++-v3/build/include -I/mnt/lfs/sources/gcc-13.2.0/libstdc++-v3/libsupc++ -std=gnu++20 -D_GLIBCXX_SHARED -fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual -Wabi=2 -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -frandom-seed=tzdb.lo -fimplicit-templates -fcf-protection -mshstk -I. -c ../../../src/c++20/tzdb.cc  -fPIC -DPIC -D_GLIBCXX_SHARED -o tzdb.o
../../../src/c++20/tzdb.cc:640:9: ошибка: «mutex» не является именем типа; имелось в виду «minutes»?
  640 |         mutex infos_mutex;
      |         ^~~~~
      |         minutes
../../../src/c++20/tzdb.cc: In member function «void std::chrono::time_zone::_Impl::RulesCounter<_Tp>::lock()»:
../../../src/c++20/tzdb.cc:642:23: ошибка: нет декларации «infos_mutex» в этой области видимости
  642 |         void lock() { infos_mutex.lock(); }
      |                       ^~~~~~~~~~~
../../../src/c++20/tzdb.cc: In member function «void std::chrono::time_zone::_Impl::RulesCounter<_Tp>::unlock()»:
../../../src/c++20/tzdb.cc:643:25: ошибка: нет декларации «infos_mutex» в этой области видимости
  643 |         void unlock() { infos_mutex.unlock(); }
      |                         ^~~~~~~~~~~
make[3]: *** [Makefile:754: tzdb.lo] Ошибка 1
make[3]: выход из каталога «/mnt/lfs/sources/gcc-13.2.0/libstdc++-v3/build/src/c++20»
make[2]: *** [Makefile:792: all-recursive] Ошибка 1
make[2]: выход из каталога «/mnt/lfs/sources/gcc-13.2.0/libstdc++-v3/build/src»
make[1]: *** [Makefile:576: all-recursive] Ошибка 1
make[1]: выход из каталога «/mnt/lfs/sources/gcc-13.2.0/libstdc++-v3/build»
make: *** [Makefile:501: all] Ошибка 2

Что нужно исправить для удачной компиляции?

Ответ на: комментарий от rupert

И как это сделать, а главное в каком месте?

Возможно это из-за того, что в команде конфигурации прописан путь /tools/$LFS_TGT/include/c++/13.2.0

../libstdc++-v3/configure
–host=$LFS_TGT
–build=$(../config.guess)
–prefix=/usr
–disable-multilib
–disable-nls
–disable-libstdcxx-pch
–with-gxx-include-dir=/tools/$LFS_TGT/include/c++/13.2.0

А у меня этой дирректории нет.

Daniilus31
() автор топика
Ответ на: комментарий от alex0x08

Выполни export LANG=C перед запуском make, это переключит вывод на английский

Лучше вообще в пакетах вроде gcc/binutils отключать локализацию на этапе сборке, от неё больше вреда, чем пользы. У меня в генте вот такой «блэклист» сейчас: https://0x0.st/H3fY.txt

annulen ★★★★★
()