gcc 4.6.3 локальных установок с GMP 5.0.5 mpfr 3.1.1 ошибки

Файл является блокировкой файла H2 из основанного на лифте (веб-) приложения. H2 использует интересный протокол захвата файла, файл будет воссоздан в значительной степени сразу, если та база данных будет использоваться.

(Имя файла соответствует имени базы данных персистентности по умолчанию для той платформы.)

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

Ваш strace вывод ясно показывает, что удаление связь успешно.

unlinkat(AT_FDCWD, "lift_proto.db.lock.db", 0) = 0

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

В неактивной ext3 файловой системе:

$ touch a
$ stat -c %i a
593358
$ rm a
$ touch a
$ stat -c %i a
593358
$ touch a b
$ stat -c %i a b
593358
593362
$ rm a b
$ touch b a
$ stat -c %i a b
593362
593358

2
02.12.2012, 23:46
1 ответ

Если configure говорит "MPFR> = 2.4.2 необходимых", существует, вероятно, серьезное основание для этого. Я не уверен, может ли система сборки GCC скомпилировать библиотеки, прежде чем она попытается связаться против них. Традиционный способ сделать это:

  • создайте необходимые библиотеки и установите их в Ваш корневой каталог или подкаталог этого, например. $HOME/tools (это обычно достигается путем установки --prefix опция для configure сценарии) - который создает дерево bin, include, lib / lib64 и share в соответствии с целевым каталогом.

  • скажите buildsystem GCC пользоваться библиотеками из своего предпочтительного каталога с помощью --with-mpfr=$HOME/tools опция к configure. Очевидно, необходимо будет добавить их для любой библиотеки, которой Вы захотите пользоваться от нестандартного местоположения - посмотрите configure --help для всех доступных вариантов.

Тонкая настройка LD_LIBRARY_PATH вероятно, не поможет Вам, поскольку это только изменяет поведение динамического компоновщика ld.so и это (amlost) всегда изучает /lib и /usr/lib как последнее прибежище (см. man ld.so для подробно объяснения).

Как примечание стороны, Вы могли бы хотеть захватить GCC 4.7.2 вместо более старых 4.6.3.

0
27.01.2020, 23:06
  • 1
    я не попробовал то, что Вы говорите все же, но руководство по установке, приводит меня полагать, что при извлечении tar для mpfr mpc, и GMP в gcc src dir, затем создают вещи, должен быть в порядке (cf advogato.org/person/redi/diary/240.html). У меня есть затем отдельный dir сборки (не subdir gcc src dir), от которого я работаю: –  fpghost 03.12.2012, 01:03
  • 2
    /home/myusername/gcc-temp/gcc-4.6.3/configure --prefix=/home/myusername/opt/gcc-4.6.3 --program-suffix=46 --enable-languages=c,c++ --enable-threads=posix --enable-shared --enable-__cxa_atexit --enable-clocale=gnu --disable-multilib --with-mpfr-include=$(pwd)/../gcc-4.6.3/mpfr/src --with-mpfr-lib=$(pwd)/../gcc-4.6.3/mpfr/src/.libs –  fpghost 03.12.2012, 01:04
  • 3
    это избавляется от предыдущей ошибки, но теперь я добираюсь libtool: link: ranlib .libs/libmpc.a /bin/sed: can't read /opt/streamline-packages/gmp-5.0.0/lib64/libgmp.la: No such file or directory libtool: link: /opt/streamline-packages/gmp-5.0.0/lib64/libgmp.la' не допустимый архив libtool, делают [5]: *** [libmpc.la] Ошибка 1' –  fpghost 03.12.2012, 01:05
  • 4
    , я экспортировал LD_LIBRARY_PATH = "" (и другие как LIBRARY_PATH уже пусты), так никакая идея, почему это ведет себя как это. –  fpghost 03.12.2012, 01:05
  • 5
    --with-mpfr... должен использоваться, когда Вы уже создали библиотеки. Документация GCC действительно требует, что, если источники присутствуют в подкаталогах, она создаст их вместе с собой. Можно попытаться готовить исходное дерево снова, на этот раз выполнив все cp, mv и подобные команды с -v так, чтобы Вы видели то, что действительно перемещается/копируется где. –  peterph 03.12.2012, 01:48

Теги

Похожие вопросы