LINUX.ORG.RU

GCC и его зависимости.

 ,


0

1

Доброго утра. Хочу пересобрать себе gcc. У него, значит, есть 3 зависимости - gmp, mpfr, mpc. Собрал эти три пакета. У них всех есть какие-то конфликтующие файлы

sudo dpkg -i gmp_6.1.1-1_amd64.deb 
(Чтение базы данных ... на данный момент установлено 296332 файла и каталога.)
Распаковывается пакет gmp (из файла gmp_6.1.1-1_amd64.deb)...
dpkg: не удалось обработать параметр gmp_6.1.1-1_amd64.deb (--install):
 попытка перезаписать «/usr/local/share/info/dir», который уже имеется в пакете mpc 1.0.3-1
dpkg-deb: ошибка: подпроцесс вставка уничтожен по сигналу (Обрыв канала)
При обработке следующих пакетов произошли ошибки:
 gmp_6.1.1-1_amd64.deb
И так
$ sudo dpkg -i /tmp/mpfr-3.1.4/mpfr_3.1.4-1_amd64.deb 
Выбор ранее не выбранного пакета mpfr.
(Чтение базы данных ... на данный момент установлено 296334 файла и каталога.)
Распаковывается пакет mpfr (из файла .../mpfr_3.1.4-1_amd64.deb)...
dpkg: не удалось обработать параметр /tmp/mpfr-3.1.4/mpfr_3.1.4-1_amd64.deb (--install):
 попытка перезаписать «/usr/local/share/info/dir», который уже имеется в пакете gmp 6.1.1-1
dpkg-deb: ошибка: подпроцесс вставка уничтожен по сигналу (Обрыв канала)
При обработке следующих пакетов произошли ошибки:
 /tmp/mpfr-3.1.4/mpfr_3.1.4-1_amd64.deb
Можно ли эти файлы перезаписать новыми и нужна ли какая-то последовательность в установке этих трех пакетов?

★★★★

up

dnb ★★★★
() автор топика

Вне зависимости от того, в каком порядке ты поставишь эти пакеты, набор файлов в них не поменяется и конфликт никуда не денется. Вангую, что ты криво собрал эти пакеты.

P.S. тут бампы не работают.

tiandrey ★★★★★
()
Последнее исправление: tiandrey (всего исправлений: 1)
Ответ на: комментарий от dnb

«Поздравляю, Шарик, ты балбес.» (с)

Радуйся, что ты не ncurses собирал и у тебя система еще грузится. Зачем ты либы-то руками собираешь, которые в системе присутствуют, скорее всего?

DeadEye ★★★★★
()
Ответ на: комментарий от dnb

На кой ляд тебе вообще обновлять компилятор таким способом? Почему не соберешь компилятор с текущими?

DeadEye ★★★★★
()
Ответ на: комментарий от anonymous

Ты идиот или только прикидываешься? Что изменится от того, что ты узнаешь зачем мне это нужно? Ах да, станешь убеждать что на самом деле мне это не нужно.

dnb ★★★★
() автор топика

смотри как собирается в твоем дистрибутиве. возможно, есть патчи (в дебиане, например, к некоторым пакетам идет целая куча патчей) или может дело в параметрах сборки. ну и еще. ты не указал версию gcc - возможно, она уже есть собранная, например в experimental дебиана.

CryAngel
()
Ответ на: комментарий от DeadEye

https://gcc.gnu.org/install/prerequisites.html

$ ./configure
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether ln works... yes
checking whether ln -s works... yes
checking for a sed that does not truncate output... /bin/sed
checking for gawk... gawk
checking for libatomic support... yes
checking for libcilkrts support... yes
checking for libitm support... yes
checking for libsanitizer support... yes
checking for libvtv support... yes
checking for libmpx support... yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking whether g++ accepts -static-libstdc++ -static-libgcc... yes
checking for gnatbind... no
checking for gnatmake... no
checking whether compiler driver understands Ada... no
checking how to compare bootstrapped objects... cmp --ignore-initial=16 $$f1 $$f2
checking for objdir... .libs
checking for the correct version of gmp.h... yes
checking for the correct version of mpfr.h... no
configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.
Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify
their locations.  Source code for these libraries can be found at
their respective hosting sites as well as at
ftp://gcc.gnu.org/pub/gcc/infrastructure/.  See also
http://gcc.gnu.org/install/prerequisites.html for additional info.  If
you obtained GMP, MPFR and/or MPC from a vendor distribution package,
make sure that you have installed both the libraries and the header
files.  They may be located in separate packages.
dnb ★★★★
() автор топика
Ответ на: комментарий от CryAngel

Как посмотреть как он собирается в моем дистрибутиве? Дистрибутив убунта, есть gcc-6.1 из PPA, но мне надо собрать без некоторых параметров - нужно собрать самому.

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

Послушай бывалого человека, собиравшего LFS и пользующегося Gentoo и Debian: не устраивай самодеятельности, возьми src-пакет (apt-get source <whatever>), возьми оттуда директорию debian со всеми правилами сборки, и собирай свои сырцы с её помощью через debuild. Мейнтейнеры уже за тебя подумали, куда какие файлы класть и как это сделать так, чтобы коллизий не вышло.

Правила сборки можешь поправить на своё усмотрение.

tiandrey ★★★★★
()
Последнее исправление: tiandrey (всего исправлений: 2)
Ответ на: комментарий от dnb

должны быть пакеты с исходниками - убунту никогда не пробовал, не знаю как там, но в дебиане к каждому бинарному пакету идут пакеты с исходниками и специальными файлами, которые управляют процессом сборки. думаю, в убунте они тоже должны быть, т.к. система управления пакетами используется та же.

CryAngel
()
Ответ на: комментарий от dnb

Да, забыл сказать: чтобы apt-get source заработал, нужно, чтобы в /etc/sources.list (или /etc/sources.list.d/...) были строчки с deb-src.

tiandrey ★★★★★
()
Последнее исправление: tiandrey (всего исправлений: 1)

могу посоветовать заглянуть в LFS, там этот момент наверняка как-то обговаривается или решается

Harald ★★★★★
()
Ответ на: комментарий от dnb

Тебе так большими буквами и сказали, что

The difficult way, which is not recommended, is to download the sources for GMP, MPFR and MPC, then configure and install each of them in non-standard locations, then configure GCC with --with-gmp=/some/silly/path/gmp --with-mpfr=/some/silly/path/mpfr --with-mpc=/some/silly/path/mpc, then be forced to set

Смотри по моей ссылке Support libraries, не будь как Ъ.

DeadEye ★★★★★
()
Ответ на: комментарий от Harald

В lfs собирают gcc сразу вместе с этими либами:

GCC now requires the GMP, MPFR and MPC packages. As these packages may not be included 
in your host distribution, they will be built with GCC. 
Unpack each package into the GCC source directory and rename the resulting directories so the
GCC build procedures will automatically use them
Но то что хорошо в lfs != тому что хорошо в debian. Плюсую использование src пакетов, там это все наверняка разрулено.

alchemist
()
Последнее исправление: alchemist (всего исправлений: 1)
Ответ на: комментарий от Harald

не, LFS не использует dpkg, поэтому это там никак не решается (в ОП посте описана проблема именно при использовании dpkg, с make install такого бы не возникло, максимум предупреждение что файл будет перезаписан)

CryAngel
()
Ответ на: комментарий от tiandrey

Скачал исходники через apt-get source gcc-6. В каталоге debian есть куча файлов, но нет файла configure. Как мне тут сделать конфигурацию пакета?

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

Тебе не нужно запускать configure руками. Кладёшь debian в корень распакованных сырцов gcc (если хочешь собрать какую-то кастомную версию, не ту, что скачалась), и оттуда (из корня, не из debian) запускаешь debuild. Правила сборки описаны в debian/rules, это Makefile.

tiandrey ★★★★★
()
Последнее исправление: tiandrey (всего исправлений: 2)
Ответ на: комментарий от dnb
checking for the correct version of gmp.h... yes
checking for the correct version of mpfr.h... no
configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.

Но в убунте даже в 12.04 LTS уже есть mpfr 3.1. Так что если у тебя убунта ещё поддерживаемая, то смотрится как будто libmpfr-dev просто не установлен.

gag ★★★★★
()

Может в версиях проблема

> pkg info -d gcc-4.8.5_2
gcc-4.8.5_2:
	indexinfo-0.2.4
	mpc-1.0.3
	gmp-5.1.3_3
	binutils-2.27,1
	mpfr-3.1.4

> pkg info -d gcc6-6.2.0
gcc6-6.2.0:
	indexinfo-0.2.4
	mpc-1.0.3
	gmp-5.1.3_3
	binutils-2.27,1
	mpfr-3.1.4
iZEN ★★★★★
()
Последнее исправление: iZEN (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.