Компиляция устаревшего программного обеспечения с помощью gcc-5 - система make не может найти libgfortranbegin.a - но я могу - PullRequest
0 голосов
/ 27 мая 2019

Я пытаюсь скомпилировать устаревшее программное обеспечение. (CERN Root 5.34)

Для этого мне нужно было установить gcc-5, так как я столкнулся с ошибками в последней версии gcc.

(Использование gcc-5 - всего лишь предположение. Я вполне уверен, что это должна быть «нормальная» версия для использования.)

Root компилируется с помощью системы configure / make.

Моя система - это Debian 9 Stretch. Чтобы не сломать мою систему и установить несколько версий gcc одновременно, я следовал следующей информации:

https://gcc.gnu.org/faq.html#multiple

Я выбрал префикс: --prefix=/home/user/Programs

Я скомпилировал gcc без проблем и запустил make install.

Я вижу, например, файл /home/user/Programs/bin/g++

/home/user/Programs/bin/g++ --version
g++ (GCC) 5.5.0
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Я столкнулся с проблемой при создании root.

Я сталкиваюсь с ошибкой

make CC=/home/user/Programs/bin/gcc CXX=/home/user/Programs/bin/g++
g++ -shared -Wl,-soname,libminicern.so -m64 -O2 -Wl,--no-undefined -Wl,--as-needed -o lib/libminicern.so misc/minicern/src/cernlib.o -ldl misc/minicern/src/kernlib.o misc/minicern/src/zebra.o misc/minicern/src/hbook.o /usr/lib/gcc/x86_64-linux-gnu/6/libgfortran.so libgfortranbegin.a
g++: error: libgfortranbegin.a: No such file or directory
/home/ecb/directory/root/misc/minicern/Module.mk:48: recipe for target 'lib/libminicern.so' failed

Как видите, я указал make для использования компиляторов gcc-5 C и C ++.

Я обнаружил 2 версии libgfortranbegin.a в моей системе. Один в /usr/lib/gcc/x86_64-linux-gnu/6, а другой в ~/Programs/lib/gcc/x86_64-unknown-linux-gnu/5.5.0.

Я подумал, что это немного странно, что путь был "unknown-linux", поэтому я сделал символическую ссылку ~/Programs/lib/gcc/x86_64-linux-gnu/5.5.0 - однако это не решило проблему.

Я пытался найти информацию об этом, но я нашел только один хит

https://root -forum.cern.ch / т / косяк-найти-libgfortranbegin-а-когда-установка корень-6-06-04 / 21222

Я не думаю, что это особенно актуально - не только другая (основная) версия программного обеспечения, с другой (основной) версией компилятора, но, кроме того, у этого человека были проблемы с make install I не может даже пройти make.

Одна вещь, о которой я упомянул, это то, что при сборке gcc-5 у меня не было , которое, как предполагалось, указывало опцию для изменения места размещения общих C и C ++ и библиотек. Я не до конца понимаю, к чему это приведет ... Размещены ли в директориях gcc-5 include и lib... относительно --prefix=/home/user/Programs?

Если я загляну внутрь /home/user/Programs У меня есть каталоги, такие как bin, lib, lib32, lib64 include - так что это говорит о том, что ответ на поставленный выше вопрос "Да", и поэтому это не является причиной проблемы.

У меня больше нет идей, как поступить с этим. Я знаю, где находится libgfortranbegin.a - установлено как минимум 2 версии, одна для общесистемной системы по умолчанию, одна для gcc6 и одна для локальной установки gcc-5.

Нужно ли указать make или настроить, где найти libgfortranbegin.a? Если да, то как мне это сделать?

...