Я недавно установил gcc 6.1, специально для библиотек, упомянутых в названии (gmp / mpfr / mpc). Я следовал тому, что сказал сайт gnu:
GNU Multiple Precision Library (GMP) версия 4.3.2 (или более поздняя)
Необходимо построить GCC. Если исходное распределение GMP найдено в
подкаталог ваших источников GCC с именем gmp, он будет собран вместе
с GCC. В качестве альтернативы, если GMP уже установлен, но его нет в
путь поиска вашей библиотеки, вам нужно будет настроить с помощью
—with-gmp опция настройки. Смотрите также —with-gmp-lib и —with-gmp-include. Сборка внутри дерева поддерживается только с версией GMP, которую устанавливает download_prerequisites.
Аналогично для других библиотек, а именно, я скачал исходные коды последней версии, скопированные в мою директорию GCC, перед тем, как выполнить «configure», «make» и «make install» gcc, предполагая, что он был собран вместе с НКА. Однако когда я пытаюсь запустить скомпилированный проект, который использует библиотеку gmp, он говорит:
error while loading shared libraries: libgmp.so.10: cannot open shared object file: No such file or directory
Поэтому я искал, где находится общий объект, но не могу найти, где его установил GCC.
Я должен был сначала скомпилировать GMP / MPFR и MPC перед установкой gcc? потому что я думал, что в этом нет необходимости. Если мне не нужно было компилировать библиотеки, где должны быть установлены GMP / MPFR и MPC?
Некоторые дальнейшие детали:
Я не думаю, что я сделал что-то странное и сложное, я думаю.
1. Я скачал gcc и поместил исходный код в каталог.
2. Я скачал все эти библиотеки, как файлы tar;
3. создал три папки в корне исходников gcc (gmp, mpfr и mpc) и расширил в этих папках файлы предыдущего шага.
4. Для GCC я выполнил ./configure --prefix=/path/to/gcc_build
5. Я выполнил make
6. тогда make install
Если я не использую библиотеки, я могу скомпилировать и выполнить без проблем, когда мне нужны эти библиотеки, после успешной компиляции возвращается ошибка, о которой я упоминал. Если я посмотрю в lib/
а также lib64/
пути там ничего не связаны с библиотеками gmp.
Поправьте меня если я ошибаюсь.
Я компилирую GCC 6.3.0 с их исходного сайта, используя cygwin, после того, как исследование последовало за этим постом. Вот Сначала я скомпилирую инфраструктуру GCC, включая GMP, MPFR, MPC и libelf, ppl (необязательно). Затем попробуйте скомпилировать GCC, используя это команда (потому что я настроил GCC для Linux, поэтому моя цель — i686-pc-linux-gnu). Я компилирую инфраструктуру GCC и добавляю префикс к
--prefix=/opt/cross
для GMP, MPFR, MPC также libelf и ppl.
Поэтому, когда я компилирую GCC, я могу использовать.
--with-gmp=/opt/cross --with-mpfr=/opt/cross --with-mpc=/opt/cross
и GCC будет автоматически следить за инфраструктурой, которая им нужна, в каталоге / opt / cross.
Потому что много раз я пытаюсь
./contrib/download_prerequisites
следующий этот метод, всегда получающий ошибку при попытке скомпилировать GCC.
Я сделал с этим методом, компилируя GCC также binutils для i686-pc-linux-gnu. Но я не пытался использовать для компиляции ядра Linux с использованием Cygwin.
Извините за мой английский, и извините, если мои ответы OOT.
Других решений пока нет …