Добрый день всем жителям! собираю LFS 6.8 по родному английскому хэндбуку. столкнулась вот с такой проблемой:
собираю Glibc -
../glibc-2.13/configure --prefix=/tools \ --host=$LFS_TGT --build=$(../glibc-2.13/scripts/config.guess) \ --disable-profile --enable-add-ons \ --enable-kernel=2.6.22.5 --with-headers=/tools/include \ libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes
проходит без ошибок, но после выполнения команды make выдаёт:
sysdeps/unix/sysv /linux/sys/syscall.h:25:24: fatal error: asm/unistd.h: Нет такого файла или каталога compilation terminated. In file included from ./sysdeps/unix/sysdep.h:21:0, from ./sysdeps/unix/i386/sysdep.h:19, from sysdeps/unix/sysv/linux/i386/sysdep.h:25, from <stdin>:1:
make[1]: *** Нет правила для сборки цели `/mnt/lfs/sources/glibc-build/Versions.all’, требуемой для `/mnt/lfs/sources/glibc-build/abi-versions.h’. Останов. make[1]: Выход из каталога `/mnt/lfs/sources/glibc-2.13\′ make: *** [all] Ошибка 2
решила скачать Glibc с родного зеркала. Удалила папки и исходник Glibc, скачала заново, но после выполнения (уже повторного): case `uname -m` in i?86) echo «CFLAGS += -march=i486 -mtune=native» > configparms ;; esac
выдаёт — bash: configparms: Отказано в доступе
kernel поставлен, заголовки скопированы в /tools/include
друзья. расскажите пожалуйста, где грабли, и как от них избавляться, буду очень благодарна!
Последние комментарии
- OlegL, 17 декабря 2023 года в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
Насчет ошибки при компиляции — вот тут народ делится своими рецептами.
Девушка, вы не в Питере случаем живёте? :)
А по теме — есть ощущение, что glibc нужно указать исходники ядра (вероятно сконфигурированного, точно не скажу).
а не могли бы вы прокомментировать данный совет, дело в том, что суть примерно поняла, но конкретно кусок in your (or rather, the user lfs’s ${PATH}) остался непонятен.
а файл unistd.h находится у меня в /usr/include, папка asm не создалась при работе с хедерами.
а файл unistd.h находится у меня в /usr/include, папка asm не создалась при работе с хедерами.
так, неправильно, в /tools/include/asm файл есть!
Там должна быть папка proof
Вы при сборке Glibc вместо папки /usr используете папку /tools, но хедеры скопированы в /usr/include ( не /tools/include ).
Скорей всего лечится:
но утверждать не стану.
Как скопировать Linux API Headers: www.linuxfromscratch.org/lfs/view/6.8/chapter06/linux-headers.html
Как собирать glibc: www.linuxfromscratch.org/lfs/view/6.8/chapter06/glibc.html
В Вашем хэндбуке используется путь /usr или /tools ?
Комментирую: Приведенная мной цитата неудачная. Она никак не касается Вашей проблемы. По этому не обращайте на нее внимание пожалуйста.
Лично от меня: на скольких сайтах, форумах Вы задали этот вопрос?
в теме написано, что хедеры лежат в /tools/include
хэндбук мой — есть официальный англоязычный хэндбук, и конкретное место, на котором я сижу:
www.linuxfromscratch.org/lfs/view/stable/chapter05/glibc.html (следовательно путь в нём указан /tools)
правильно ли мне будет пробовать шаг 6.9?
папки proof нет.
а в чём суть вопроса про количество форумов?))
Да так, посмотрел выдачу Google ))
Предоставте пожалуйста вывод команды:
Замечание: с примеров хэндбука не обязательно копировать бэкслеши «\». Это для наглядности. На практике они позволяют в консоли переносить строку на новую строчку.
root@ubuntu:/mnt/lfs# sudo ls -l tools/include/asm | grep unistd
-rw-r--r— 1 root root 9963 2011-08-23 19:10 unistd_32.h
-rw-r--r— 1 root root 22375 2011-08-23 19:10 unistd_64.h
-rw-r--r— 1 root root 82 2011-08-23 19:10 unistd.h
и про Google…)
гугл отслеживает внешнюю форму, а не динамику развития внутреннего содержания. надеюсь, что количество перейдёт в качество, всё-таки!
Здорово. Заголовки (Linux API Headers) скопированы верно.
Если уже пропатчено
и создана папка glibc-build
и сделан переход в папку glibc-build
и добавлены флаги компиляции в файл configparms
Пытаемся сконфиругировать (команда configure, а сборка — это команда make), находясь в папке
Жду результатов :)
как я уже говорила:
sysdeps/unix/sysv/linux/sys/syscall.h:25:24: fatal error: asm/unistd.h:
Нет такого файла или каталога
compilation terminated.
In file included from ./sysdeps/unix/sysdep.h:21:0,
from ./sysdeps/unix/i386/sysdep.h:19,
from sysdeps/unix/sysv/linux/i386/sysdep.h:25,
from <stdin>:1:
make -r PARALLELMFLAGS="» CVSOPTS="» -C ../glibc-2.13 objdir=`pwd` all
make[1]: Вход в каталог `/mnt/lfs/sources/glibc-2.13\′
{ echo '#include «posix/bits/posix1_lim.h»’; \
echo '#define _LIBC 1\′;
\
echo '#include «misc/sys/uio.h»’; } | \
gcc -E -dM -MD -MP -MF
/mnt/lfs/sources/glibc-build/bits/stdio_lim.dT -MT
'/mnt/lfs/sources/glibc-build/bits/stdio_lim.h
/mnt/lfs/sources/glibc-build/bits/stdio_lim.d' \
-Iinclude -I/mnt/lfs/sources/glibc-build
-Isysdeps/i386/elf -Inptl/sysdeps/unix/sysv/linux/i386/i686
-Isysdeps/unix/sysv/linux/i386/i686 -Inptl/sysdeps/unix/sysv/linux/i386
-Isysdeps/unix/sysv/linux/i386 -Inptl/sysdeps/unix/sysv/linux
-Inptl/sysdeps/pthread -Isysdeps/pthread -Isysdeps/unix/sysv/linux
-Isysdeps/gnu -Isysdeps/unix/common -Isysdeps/unix/mman
-Isysdeps/unix/inet -Isysdeps/unix/sysv/i386 -Inptl/sysdeps/unix/sysv
-Isysdeps/unix/sysv -Isysdeps/unix/i386 -Inptl/sysdeps/unix
-Isysdeps/unix -Isysdeps/posix -Isysdeps/i386/i686/fpu
-Isysdeps/i386/i686/multiarch -Inptl/sysdeps/i386/i686
-Isysdeps/i386/i686 -Isysdeps/i386/i486 -Inptl/sysdeps/i386/i486
-Isysdeps/i386/fpu -Inptl/sysdeps/i386 -Isysdeps/i386
-Isysdeps/wordsize-32 -Isysdeps/ieee754/ldbl-96 -Isysdeps/ieee754/dbl-64
-Isysdeps/ieee754/flt-32 -Isysdeps/ieee754 -Isysdeps/generic/elf
-Isysdeps/generic -Inptl -Ilibio -I. -nostdinc -isystem
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/include -isystem
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/include-fixed -isystem
/tools/include -xc — -o /mnt/lfs/sources/glibc-build/bits/stdio_lim.hT
nptl/sysdeps/unix/sysv/linux/bits/local_lim.h:39:26: fatal error:
linux/limits.h: Нет такого файла или каталога
compilation terminated.
mawk -f scripts/gen-sorted.awk \
-v subdirs=’csu assert ctype locale intl catgets math
setjmp signal stdlib stdio-common libio malloc string wcsmbs time dirent
grp pwd posix io termios resource misc socket sysvipc gmon gnulib iconv
iconvdata wctype manual shadow gshadow po argp crypt nss localedata
timezone rt conform debug libidn dlfcn elf' \
-v srcpfx=» \
nptl/sysdeps/pthread/Subdirs sysdeps/unix/inet/Subdirs
sysdeps/unix/Subdirs assert/Depend intl/Depend catgets/Depend
stdlib/Depend stdio-common/Depend libio/Depend malloc/Depend
string/Depend wcsmbs/Depend time/Depend posix/Depend iconvdata/Depend
nss/Depend localedata/Depend rt/Depend debug/Depend >
/mnt/lfs/sources/glibc-build/sysd-sorted-tmp
mawk: scripts/gen-sorted.awk: line 19: regular expression compile failed
(bad class — [], [^] or [)
/[^
mawk: scripts/gen-sorted.awk: line 19: syntax error at or near ]
mawk: scripts/gen-sorted.awk: line 19: runaway regular expression /, «»,
subd…
make[1]: *** Нет правила для сборки цели
`/mnt/lfs/sources/glibc-build/Versions.all’, требуемой для
`/mnt/lfs/sources/glibc-build/abi-versions.h’. Останов.
make[1]: Выход из каталога `/mnt/lfs/sources/glibc-2.13\′
make: *** [all] Ошибка 2
Что выдает
ubuntu@ubuntu:/mnt/lfs/sources/glibc-build$ echo $LFS
/mnt/lfs
ubuntu@ubuntu:/mnt/lfs/sources/glibc-build$ echo $LFS_TGT
ubuntu@ubuntu:/mnt/lfs/sources/glibc-build$ ld --verbose | grep SEARCH
SEARCH_DIR(«/usr/i686-linux-gnu/lib32»);
SEARCH_DIR(«=/usr/local/lib32»); SEARCH_DIR(«=/lib32»);
SEARCH_DIR(«=/usr/lib32»); SEARCH_DIR(«=/usr/local/lib/i386-linux-gnu»);
SEARCH_DIR(«=/usr/local/lib»); SEARCH_DIR(«=/lib/i386-linux-gnu»);
SEARCH_DIR(«=/lib»); SEARCH_DIR(«=/usr/lib/i386-linux-gnu»);
SEARCH_DIR(«=/usr/lib»);
следовательно на echo $LFS_TGT выдал НИЧЕГО
Думаю, именно здесь грабли
www.linuxfromscratch.org/lfs/view/stable/chapter04/settingenvironment.html
echo $LFS_TGT должно возвращать строку вида i686-lfs-linux-gnu-gcc
Так как уже были собраны binutils и gcc, думаю, нужно проделать все сначала:
начать с Chapter 4 www.linuxfromscratch.org/lfs/view/stable/chapter04/chapter04.html
и дойти до конца Chapter 5 www.linuxfromscratch.org/lfs/view/stable/chapter05/chapter05.html
Причина граблей — не верно установлены значения переменных в Chapter 4
заново проделала 4 и 5 шаги, теперь echo $LFS_TGT выдаёт нужную информацию, но на make в glibc получила:
make -r PARALLELMFLAGS="» CVSOPTS="» -C ../glibc-2.13 objdir=`pwd` all
make[1]: Entering directory `/mnt/lfs/sources/glibc-2.13\′
{ echo '#include «posix/bits/posix1_lim.h»’; \
echo '#define _LIBC 1\′;
\
echo '#include «misc/sys/uio.h»’; } | \
gcc -E -dM -MD -MP -MF
/mnt/lfs/sources/glibc-build/bits/stdio_lim.dT -MT
'/mnt/lfs/sources/glibc-build/bits/stdio_lim.h
/mnt/lfs/sources/glibc-build/bits/stdio_lim.d' \
-Iinclude -I/mnt/lfs/sources/glibc-build
-Isysdeps/i386/elf -Inptl/sysdeps/unix/sysv/linux/i386/i686
-Isysdeps/unix/sysv/linux/i386/i686 -Inptl/sysdeps/unix/sysv/linux/i386
-Isysdeps/unix/sysv/linux/i386 -Inptl/sysdeps/unix/sysv/linux
-Inptl/sysdeps/pthread -Isysdeps/pthread -Isysdeps/unix/sysv/linux
-Isysdeps/gnu -Isysdeps/unix/common -Isysdeps/unix/mman
-Isysdeps/unix/inet -Isysdeps/unix/sysv/i386 -Inptl/sysdeps/unix/sysv
-Isysdeps/unix/sysv -Isysdeps/unix/i386 -Inptl/sysdeps/unix
-Isysdeps/unix -Isysdeps/posix -Isysdeps/i386/i686/fpu
-Isysdeps/i386/i686/multiarch -Inptl/sysdeps/i386/i686
-Isysdeps/i386/i686 -Isysdeps/i386/i486 -Inptl/sysdeps/i386/i486
-Isysdeps/i386/fpu -Inptl/sysdeps/i386 -Isysdeps/i386
-Isysdeps/wordsize-32 -Isysdeps/ieee754/ldbl-96 -Isysdeps/ieee754/dbl-64
-Isysdeps/ieee754/flt-32 -Isysdeps/ieee754 -Isysdeps/generic/elf
-Isysdeps/generic -Inptl -Ilibio -I. -nostdinc -isystem
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/include -isystem
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/include-fixed -isystem
/tools/include -xc — -o /mnt/lfs/sources/glibc-build/bits/stdio_lim.hT
nptl/sysdeps/unix/sysv/linux/bits/local_lim.h:39:26: fatal error:
linux/limits.h: No such file or directory
compilation terminated.
(echo ’sysd-rules-sysdirs := sysdeps/i386/elf
nptl/sysdeps/unix/sysv/linux/i386/i686 sysdeps/unix/sysv/linux/i386/i686
nptl/sysdeps/unix/sysv/linux/i386 sysdeps/unix/sysv/linux/i386
nptl/sysdeps/unix/sysv/linux nptl/sysdeps/pthread sysdeps/pthread
sysdeps/unix/sysv/linux sysdeps/gnu sysdeps/unix/common
sysdeps/unix/mman sysdeps/unix/inet sysdeps/unix/sysv/i386
nptl/sysdeps/unix/sysv sysdeps/unix/sysv sysdeps/unix/i386
nptl/sysdeps/unix sysdeps/unix sysdeps/posix sysdeps/i386/i686/fpu
sysdeps/i386/i686/multiarch nptl/sysdeps/i386/i686 sysdeps/i386/i686
sysdeps/i386/i486 nptl/sysdeps/i386/i486 sysdeps/i386/fpu
nptl/sysdeps/i386 sysdeps/i386 sysdeps/wordsize-32
sysdeps/ieee754/ldbl-96 sysdeps/ieee754/dbl-64 sysdeps/ieee754/flt-32
sysdeps/ieee754 sysdeps/generic/elf sysdeps/generic’;
\
for dir in sysdeps/i386/elf
nptl/sysdeps/unix/sysv/linux/i386/i686 sysdeps/unix/sysv/linux/i386/i686
nptl/sysdeps/unix/sysv/linux/i386 sysdeps/unix/sysv/linux/i386
nptl/sysdeps/unix/sysv/linux nptl/sysdeps/pthread sysdeps/pthread
sysdeps/unix/sysv/linux sysdeps/gnu sysdeps/unix/common
sysdeps/unix/mman sysdeps/unix/inet sysdeps/unix/sysv/i386
nptl/sysdeps/unix/sysv sysdeps/unix/sysv sysdeps/unix/i386
nptl/sysdeps/unix sysdeps/unix sysdeps/posix sysdeps/i386/i686/fpu
sysdeps/i386/i686/multiarch nptl/sysdeps/i386/i686 sysdeps/i386/i686
sysdeps/i386/i486 nptl/sysdeps/i386/i486 sysdeps/i386/fpu
nptl/sysdeps/i386 sysdeps/i386 sysdeps/wordsize-32
sysdeps/ieee754/ldbl-96 sysdeps/ieee754/dbl-64 sysdeps/ieee754/flt-32
sysdeps/ieee754 sysdeps/generic/elf sysdeps/generic; do
\
case «$dir» in
\
/*) ;;
\
*) dir=«\$(..)$dir» ;;
\
esac;
\
asm=’.S .s’;
\
\
for o in .o .os .op .og .ob .oS; do
\
set % % rtld-% rtld-% rtld-% % m_% s_% ptw-% %;
\
while [ $# -ge 2 ]; do
\
t=$1; shift;
\
d=$1; shift;
\
v=${t%%%}; [ x"$v" = x ] || v=«\$(${v}CPPFLAGS)»;
\
for s in $asm .c; do
\
echo «\$(objpfx)$t$o: $dir/$d$s \$(before-compile)»; \
echo » \$(compile-command$s) $v»;
\
done;
\
done;
\
done;
\
echo «\$(inst_includedir)/%.h: $dir/%.h \$(+force)»;
\
echo » \$(do-install)»;
\
done;
\
echo ’sysd-rules-done = t’) >
/mnt/lfs/sources/glibc-build/sysd-rulesT
mv -f /mnt/lfs/sources/glibc-build/sysd-rulesT
/mnt/lfs/sources/glibc-build/sysd-rules
mawk -f scripts/gen-sorted.awk \
-v subdirs=’csu assert ctype locale intl catgets math
setjmp signal stdlib stdio-common libio malloc string wcsmbs time dirent
grp pwd posix io termios resource misc socket sysvipc gmon gnulib iconv
iconvdata wctype manual shadow gshadow po argp crypt nss localedata
timezone rt conform debug libidn dlfcn elf' \
-v srcpfx=» \
nptl/sysdeps/pthread/Subdirs sysdeps/unix/inet/Subdirs
sysdeps/unix/Subdirs assert/Depend intl/Depend catgets/Depend
stdlib/Depend stdio-common/Depend libio/Depend malloc/Depend
string/Depend wcsmbs/Depend time/Depend posix/Depend iconvdata/Depend
nss/Depend localedata/Depend rt/Depend debug/Depend >
/mnt/lfs/sources/glibc-build/sysd-sorted-tmp
mawk: scripts/gen-sorted.awk: line 19: regular expression compile failed
(bad class — [], [^] or [)
/[^
mawk: scripts/gen-sorted.awk: line 19: syntax error at or near ]
mawk: scripts/gen-sorted.awk: line 19: runaway regular expression /, «»,
subd …
make[1]: Leaving directory `/mnt/lfs/sources/glibc-2.13\′
make[1]: Entering directory `/mnt/lfs/sources/glibc-2.13\′
{ echo '#include «posix/bits/posix1_lim.h»’; \
echo '#define _LIBC 1\′;
\
echo '#include «misc/sys/uio.h»’; } | \
gcc -E -dM -MD -MP -MF
/mnt/lfs/sources/glibc-build/bits/stdio_lim.dT -MT
'/mnt/lfs/sources/glibc-build/bits/stdio_lim.h
/mnt/lfs/sources/glibc-build/bits/stdio_lim.d' \
-Iinclude -I/mnt/lfs/sources/glibc-build
-Isysdeps/i386/elf -Inptl/sysdeps/unix/sysv/linux/i386/i686
-Isysdeps/unix/sysv/linux/i386/i686 -Inptl/sysdeps/unix/sysv/linux/i386
-Isysdeps/unix/sysv/linux/i386 -Inptl/sysdeps/unix/sysv/linux
-Inptl/sysdeps/pthread -Isysdeps/pthread -Isysdeps/unix/sysv/linux
-Isysdeps/gnu -Isysdeps/unix/common -Isysdeps/unix/mman
-Isysdeps/unix/inet -Isysdeps/unix/sysv/i386 -Inptl/sysdeps/unix/sysv
-Isysdeps/unix/sysv -Isysdeps/unix/i386 -Inptl/sysdeps/unix
-Isysdeps/unix -Isysdeps/posix -Isysdeps/i386/i686/fpu
-Isysdeps/i386/i686/multiarch -Inptl/sysdeps/i386/i686
-Isysdeps/i386/i686 -Isysdeps/i386/i486 -Inptl/sysdeps/i386/i486
-Isysdeps/i386/fpu -Inptl/sysdeps/i386 -Isysdeps/i386
-Isysdeps/wordsize-32 -Isysdeps/ieee754/ldbl-96 -Isysdeps/ieee754/dbl-64
-Isysdeps/ieee754/flt-32 -Isysdeps/ieee754 -Isysdeps/generic/elf
-Isysdeps/generic -Inptl -Ilibio -I. -nostdinc -isystem
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/include -isystem
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/include-fixed -isystem
/tools/include -xc — -o /mnt/lfs/sources/glibc-build/bits/stdio_lim.hT
nptl/sysdeps/unix/sysv/linux/bits/local_lim.h:39:26: fatal error:
linux/limits.h: No such file or directory
compilation terminated.
mawk -f scripts/gen-sorted.awk \
-v subdirs=’csu assert ctype locale intl catgets math
setjmp signal stdlib stdio-common libio malloc string wcsmbs time dirent
grp pwd posix io termios resource misc socket sysvipc gmon gnulib iconv
iconvdata wctype manual shadow gshadow po argp crypt nss localedata
timezone rt conform debug libidn dlfcn elf' \
-v srcpfx=» \
nptl/sysdeps/pthread/Subdirs sysdeps/unix/inet/Subdirs
sysdeps/unix/Subdirs assert/Depend intl/Depend catgets/Depend
stdlib/Depend stdio-common/Depend libio/Depend malloc/Depend
string/Depend wcsmbs/Depend time/Depend posix/Depend iconvdata/Depend
nss/Depend localedata/Depend rt/Depend debug/Depend >
/mnt/lfs/sources/glibc-build/sysd-sorted-tmp
mawk: scripts/gen-sorted.awk: line 19: regular expression compile failed
(bad class — [], [^] or [)
/[^
mawk: scripts/gen-sorted.awk: line 19: syntax error at or near ]
mawk: scripts/gen-sorted.awk: line 19: runaway regular expression /, «»,
subd …
make[1]: *** No rule to make target
`/mnt/lfs/sources/glibc-build/Versions.all’, needed by
`/mnt/lfs/sources/glibc-build/abi-versions.h’. Stop.
make[1]: Leaving directory `/mnt/lfs/sources/glibc-2.13\′
make: *** [all] Error 2
при этом /linux/limits.h находится и в /tools/include, и в /usr/include
или мне заново ещё надо установить binutils и gcc?
Chapter 5 Constructing a Temporary System — это создание Временной системы. В этом хэндбуке шаг за шагом описывается как создать свой линукс. Что бы не вносить изменения в рабочую среду Linux создается целий диск
/mnt/lfs
и в нем собирается временная система. Если что-то делать не так — как минимум можно засорить рабочую систему (в Вашем случае Ubuntu).
Все что делается должно делаться в разделе временного Linux /mnt/lfs
Да, заново конфигурировать и собирать binutils и gcc (это и есть Chapter 5)
заново попыталась установить binutils и gcc, но теперь и они выдают ошибку на шаге «make»
что это за зараза такая?
Это Linux с нуля =)
новая переустановка, новая ошибка. binutils и gcc сделал, на glibc’овский make отвечает:
paste.pocoo.org/show/465014/
Еще раз: не стоит делать это с под root’a
прошу прощения, что не отвечала долгое время:
1 раз в первый… курс, да и в ЛФС я немного продвинулась.
судя по всему помог именно Ваш совет, т.к. дошла уже до второй установки Binutils.
я теперь к делу:
во-первых, у меня не выполняется $LFS_TGT-gcc пишет, что нет -gcc, в вот $LFS_TGT gcc делает
во-вторых, не собирается Binutils. выдаёт: cannot run C compiled programs
ещё раз прошу прощения за то, что не отвечала
Важное замечание: Команда sudo служит для получения привилегий других пользователей. Это хорошая практика. Но делать какие-то действия под логином root не стоит. У Вас должен быть логин другого пользователя, и уже под логином этого пользователя следует пользоваться командой sudo.
Нет, этого делать не нужно: шаг 6.9 для реальной сборки, а шаг 5.7 — для демонстрации (обучения).