Инструменты пользователя

Инструменты сайта


software:linux_server:lfs-example:chapter06

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
software:linux_server:lfs-example:chapter06 [2024/07/15 11:45] – [6.14.1. Установка пакета Sed] vladpolskiysoftware:linux_server:lfs-example:chapter06 [2024/07/15 14:18] (текущий) – [6.18.1. Установка пакета GCC] vladpolskiy
Строка 588: Строка 588:
 ====6.15.1. Установка пакета Tar==== ====6.15.1. Установка пакета Tar====
  
-Подготовьте Tar к компиляции: +Разорхивируем,подготовим файл для компиляции, скомпилируем, установите пакет и удалим временный каталог:
 <code> <code>
-./configure --prefix=/usr                     \+tar -xvf tar-1.35.tar.xz && cd tar-1.35 && 
 +time { ./configure --prefix=/usr                     \
             --host=$LFS_TGT                   \             --host=$LFS_TGT                   \
-            --build=$(build-aux/config.guess) +            --build=$(build-aux/config.guess) && time make && make DESTDIR=$LFS install; } && 
-</code> +cd .. &&  
- +rm -Rf tar-1.35
-Скомпилируйте пакет: +
- +
-<code> +
-make +
-</code> +
- +
-Установите пакет: +
- +
-<code> +
-make DESTDIR=$LFS install+
 </code> </code>
 +{{:software:linux_server:lfs-example:lfs_example_196.png?|}}
 +Результат выполнения команд
 +{{:software:linux_server:lfs-example:lfs_example_197.png?|}}
  
 Подробная информация об этом пакете находится в [[software:linux_server:lfs:chapter08#8.70.2. Содержимое пакета Tar|Разделе 8.70.2. «Содержимое пакета Tar.»]] Подробная информация об этом пакете находится в [[software:linux_server:lfs:chapter08#8.70.2. Содержимое пакета Tar|Разделе 8.70.2. «Содержимое пакета Tar.»]]
Строка 616: Строка 609:
  
 ====6.16.1. Установка пакета Xz==== ====6.16.1. Установка пакета Xz====
- +Запустим скрипт который сделает за нас всю работу по установке пакета xz
-Подготовьте Xz к компиляции:+
  
 <code> <code>
 +#!/bin/bash
 +SRC_FILE=xz-5.4.6.tar.xz
 +SRC_FOLDER=xz-5.4.6
 +
 +tar -xvf $SRC_FILE
 +cd $SRC_FOLDER
 +
 +time {
 ./configure --prefix=/usr                     \ ./configure --prefix=/usr                     \
             --host=$LFS_TGT                   \             --host=$LFS_TGT                   \
             --build=$(build-aux/config.guess) \             --build=$(build-aux/config.guess) \
             --disable-static                  \             --disable-static                  \
-            --docdir=/usr/share/doc/xz-5.4.6 +            --docdir=/usr/share/doc/xz-5.4.6 && 
-</code>+time make && 
 +make DESTDIR=$LFS install; } && 
 +rm -v $LFS/usr/lib/liblzma.la &&
  
-Скомпилируйте пакет:+cd .. && 
 +rm -rf $SRC_FOLDER &&
  
-<code> +echo Deleting $SRC_FOLDER 
-make+echo Done with $SRC_FILE
 </code> </code>
 +<details>
 +<summary>«**Значение команд в скрипте:**»</summary>
 +#Присваеваем значения переменным
 +#Имя ахива для распаковки
 +SRC_FILE=xz-5.4.6.tar.xz
 +#Имя папки после распаковки
 +SRC_FOLDER=xz-5.4.6
  
-Установите пакет:+tar xvf $SRC_FILE 
 +# Переход в папку xz-5.4.6 
 +cd $SRC_FOLDER
  
-<code> +# Настройка параметров компеляции
-make DESTDIR=$LFS install +
-</code>+
  
-Удалите архивный файл libtool, поскольку он потенциально опасен при кросс-компиляции:+./configure --prefix=/usr                     \ 
 +            --host=$LFS_TGT                   \ 
 +            --build=$(build-aux/config.guess) \ 
 +            --disable-static                  \ 
 +            --docdir=/usr/share/doc/xz-5.4.6 
 +#компиляция 
 +time make
  
-<code>+#установка 
 +make DESTDIR=$LFS install 
 +#Удаление архивного файла libtool
 rm -v $LFS/usr/lib/liblzma.la rm -v $LFS/usr/lib/liblzma.la
-</code>+ 
 +#Возвращение в папку /sources 
 +cd .. 
 +#Удаление папки xz-5.4.6 
 +rm -rf $SRC_FOLDER 
 +echo Удалена папка $SRC_FOLDER 
 +echo Исполнено $SRC_FILE 
 +</details> 
 +{{:software:linux_server:lfs-example:lfs_example_198.png?|}} 
 +Результат работы скрипта 
 +{{:software:linux_server:lfs-example:lfs_example_199.png?|}}
  
 Подробная информация об этом пакете находится в [[software:linux_server:lfs:chapter08#8.8.2. Содержимое пакета Xz|Разделе 8.8.2. «Содержимое пакета Xz.»]] Подробная информация об этом пакете находится в [[software:linux_server:lfs:chapter08#8.8.2. Содержимое пакета Xz|Разделе 8.8.2. «Содержимое пакета Xz.»]]
Строка 655: Строка 683:
  
 Система сборки Binutils использует содержащуюся в пакете копию libtool для линковки с внутренними статическими библиотеками, но копии libiberty и zlib, поставляемые с пакетом, не используют libtool. Это несоответствие может привести к тому, что созданные двоичные файлы будут ошибочно связаны с библиотеками из основного дистрибутива. Решение этой проблемы: Система сборки Binutils использует содержащуюся в пакете копию libtool для линковки с внутренними статическими библиотеками, но копии libiberty и zlib, поставляемые с пакетом, не используют libtool. Это несоответствие может привести к тому, что созданные двоичные файлы будут ошибочно связаны с библиотеками из основного дистрибутива. Решение этой проблемы:
 +<code>
 +"sed '6009s/$add_dir//' -i ltmain.sh"
 +</code>
  
 +Снова воспользуемся скриптом для автоматической сборки и установки
 <code> <code>
 +#!/bin/bash
 +SRC_FILE=binutils-2.42.tar.xz
 +SRC_FOLDER=binutils-2.42
 +
 +tar -xvf $SRC_FILE
 +cd $SRC_FOLDER
 +
 sed '6009s/$add_dir//' -i ltmain.sh sed '6009s/$add_dir//' -i ltmain.sh
-</code> 
  
-Создайте отдельный каталог для сборки: 
- 
-<code> 
 mkdir -v build mkdir -v build
 cd       build cd       build
-</code> 
  
-Подготовьте Binutils к компиляции: +time {
- +
-<code>+
 ../configure                   \ ../configure                   \
     --prefix=/usr              \     --prefix=/usr              \
Строка 679: Строка 711:
     --disable-werror           \     --disable-werror           \
     --enable-64-bit-bfd        \     --enable-64-bit-bfd        \
-    --enable-default-hash-style=gnu+    --enable-default-hash-style=gnu && 
 +time make && 
 +make DESTDIR=$LFS install; } && 
 +rm -v $LFS/usr/lib/lib{bfd,ctf,ctf-nobfd,opcodes,sframe}.{a,la} && 
 + 
 +cd ../.. && 
 +rm -rf $SRC_FOLDER && 
 + 
 +echo Удалена папка $SRC_FOLDER 
 +echo Выполнено для $SRC_FILE
 </code> </code>
  
Строка 689: Строка 730:
   * **--enable-64-bit-bfd**   * **--enable-64-bit-bfd**
 Включает 64-разрядную поддержку (на хостах с меньшим размером слова). В 64-разрядных системах это может и не понадобиться, но вреда от этого не будет Включает 64-разрядную поддержку (на хостах с меньшим размером слова). В 64-разрядных системах это может и не понадобиться, но вреда от этого не будет
- +{{:software:linux_server:lfs-example:lfs_example_200.png?|}} 
-Скомпилируйте пакет: +Сообщение системы после выполнения скрипта 
- +{{:software:linux_server:lfs-example:lfs_example_201.png?|}}
-<code> +
-make +
-</code> +
- +
-Установите пакет: +
- +
-<code> +
-make DESTDIR=$LFS install +
-</code> +
- +
-Удалите архивные файлы libtool, поскольку они потенциально опасны при кросс-компиляции, также удалите ненужные статические библиотеки +
- +
-<code> +
-rm -v $LFS/usr/lib/lib{bfd,ctf,ctf-nobfd,opcodes,sframe}.{a,la} +
-</code> +
 Подробная информация об этом пакете находится в [[software:linux_server:lfs:chapter08#8.19.2. Содержимое пакета Binutils|Разделе 8.19.2. «Содержимое пакета Binutils.»]] Подробная информация об этом пакете находится в [[software:linux_server:lfs:chapter08#8.19.2. Содержимое пакета Binutils|Разделе 8.19.2. «Содержимое пакета Binutils.»]]
  
Строка 812: Строка 837:
 </code> </code>
  
-Подробная информация об этом пакете находится в [[software:linux_server:lfs:chapter08#8.28.2. Содержимое пакета GCC|Разделе 8.28.2. «Содержимое пакета GCC.»]]+Снова собираем скрипт для автоматической сборки и установки 
 +<code> 
 +#!/bin/bash 
 +SRC_FILE=gcc-13.2.0.tar.xz 
 +SRC_FOLDER=gcc-13.2.0
  
 +tar -xvf $SRC_FILE
 +cd $SRC_FOLDER
 +
 +tar -xf ../mpfr-4.2.1.tar.xz
 +mv -v mpfr-4.2.1 mpfr
 +tar -xf ../gmp-6.3.0.tar.xz
 +mv -v gmp-6.3.0 gmp
 +tar -xf ../mpc-1.3.1.tar.gz
 +mv -v mpc-1.3.1 mpc
 +
 +case $(uname -m) in
 +  x86_64)
 +    sed -e '/m64=/s/lib64/lib/' \
 +        -i.orig gcc/config/i386/t-linux64
 +  ;;
 +esac
 +
 +sed '/thread_header =/s/@.*@/gthr-posix.h/' \
 +    -i libgcc/Makefile.in libstdc++-v3/include/Makefile.in
 +
 +mkdir -v build
 +cd       build
 +
 +time {
 +../configure                                       \
 +    --build=$(../config.guess)                     \
 +    --host=$LFS_TGT                                \
 +    --target=$LFS_TGT                              \
 +    LDFLAGS_FOR_TARGET=-L$PWD/$LFS_TGT/libgcc      \
 +    --prefix=/usr                                  \
 +    --with-build-sysroot=$LFS                      \
 +    --enable-default-pie                           \
 +    --enable-default-ssp                           \
 +    --disable-nls                                  \
 +    --disable-multilib                             \
 +    --disable-libatomic                            \
 +    --disable-libgomp                              \
 +    --disable-libquadmath                          \
 +    --disable-libsanitizer                         \
 +    --disable-libssp                               \
 +    --disable-libvtv                               \
 +    --enable-languages=c,c++ &&
 +time make &&
 +make DESTDIR=$LFS install; } &&
 +ln -sv gcc $LFS/usr/bin/cc &&
 +
 +cd ../.. &&
 +rm -rf $SRC_FOLDER &&
 +
 +echo Удалена папка $SRC_FOLDER
 +echo Выполнено для $SRC_FILE
 +</code>
 +{{:software:linux_server:lfs-example:lfs_example_202.png?|}}
 +Вывод после окончания выполнения команд скриптом
 +{{:software:linux_server:lfs-example:lfs_example_203.png?|}}
 +
 +Подробная информация об этом пакете находится в [[software:linux_server:lfs:chapter08#8.28.2. Содержимое пакета GCC|Разделе 8.28.2. «Содержимое пакета GCC.»]]
 +  * [[software:linux_server:lfs-example:chapter07|]]
software/linux_server/lfs-example/chapter06.1721033116.txt.gz · Последнее изменение: 2024/07/15 11:45 — vladpolskiy