Не удается найти библиотеку gmp или mpfr после установки gcc - PullRequest
0 голосов
/ 08 мая 2020

Я установил g cc -9.3.0 в linux, выполнив простые шаги в https://gcc.gnu.org/wiki/InstallingGCC Установка прошла успешно. Я думал, что этот процесс установит gmp и mpfr по пути. Но я не могу найти библиотеки gmp или mpfr.

Следует ли мне устанавливать их, когда я это сделаю ./configure?

1 Ответ

0 голосов
/ 11 мая 2020

Есть два разных способа предоставить G CC необходимые внешние хост-библиотеки, такие как GMP и MPFR :

  1. До настройки, запустите ./contrib/download_prerequisites из исходного каталога G CC верхнего уровня. Он загрузит исходные коды из соответствующих репозиториев проекта. Это все, что вам нужно сделать; G CC настроит и построит эти библиотеки перед запуском configure для себя или своих целевых библиотек.

  2. configure с --with-gmp et c. чтобы указать место, где была установлена ​​соответствующая библиотека хоста.

У любого подхода есть свои плюсы и минусы:

Первый подход требует подключения inte rnet и время сборки go вверх. Однако увеличение времени сборки незначительно по сравнению со временем сборки, необходимым для остальной части компилятора и его целевых библиотек.

С другой стороны, вы получите правильную версию и параметры сборки любой хост-библиотеки по своему усмотрению. by G CC, независимо от того, какая версия библиотеки уже была установлена ​​на хосте. И эта конфигурация намного удобнее и автономнее, когда вы кросс-компилируете G CC (потому что это примерно хост библиотеки, и, следовательно, вам нужно установить необходимые библиотеки на хост ; устанавливать на build бессмысленно). И он более надежен / самодостаточен, если вы распространяете встроенный компилятор: если на предполагаемом хосте не установлен GMP et c, тогда у вас будет дополнительная работа на этом хосте.

второй подход более сложен, потому что вам нужно собрать / установить необходимые компоненты на хосте; правильная версия, правильные флаги конфигурации и т. д. c.

С другой стороны, вам нужно создать предварительные условия только один раз для каждого хоста. Когда вы настраиваете / перестраиваете компилятор более одного раза, например, когда вы занимаетесь разработкой G CC, тогда это немного более быстрый цикл.

В первом случае версии lib не зависят от хоста версии библиотек; G CC на самом деле не заботится о том, присутствуют ли библиотеки на хосте, потому что он использует свою собственную «копию». Библиотеки будут статически связаны с исполняемым файлом, поэтому вы их нигде не найдете (возможно, G CC имеет возможность делать общие сборки в дереве для библиотек, я не знаю).

Я очень предпочитаю 1-й подход, потому что он самодостаточен и проще, в частности потому, что я часто строю G CC как канадский кросс, то есть build ≠ host ≠ target ≠ build.

...