gcc компилирует gcc с ошибками "шаблон с привязкой к C" и "специализация шаблона с привязкой к C"

Terminé usando la terminal, pero antes usé GParted Live para reducir la partición de Windows y crear espacio no asignado. El problema con GParted fue que después de agregar este espacio no asignado a la partición extendida, mi partición de arranque estaba entre este nuevo espacio y mi grupo de volúmenes lógicos, así que cambié a la línea de comandos, que es más fácil de usar.

Esto es lo que hice:

Antes de cambiar a la terminal, primero convertí el espacio no asignado en una partición llamada /dev/sda7. Hice esto en GParted y elegí ext4.

Ahora tenga en cuenta que lo siguiente solo funciona para lvm.

  1. Volumen físico creado

    pvcreate /dev/sda7
    
  2. Grupo de volumen extendido para hacer uso de este volumen físico

    vgextend fedora /dev/sda7
    

    Nota :Encontré el nombre de mi grupo de volúmenes ejecutando el comando:vgdisplay. vgstambién funciona.

  3. Volumen lógico activado para que esté disponible para que funcione la verificación y el cambio de tamaño del sistema de archivos.

    lvchange -ay /fedora/root
    

    O

    vgchange -ay
    

    La opción -asignifica activar y -ysignifica en todos los dispositivos existentes, por lo que se ve en todas partes.

  4. Realicé una verificación del sistema de archivos para asegurarme de que no hubiera errores. Esto realmente encontró algunos errores y lo arregló.

    e2fsck /dev/fedora/root
    
  5. Redimensionado el sistema de archivos

    resize2fs -l 100%FREE /dev/fedora/root
    

    Si desea aumentar el tamaño en un número absoluto como 50 GB, utilice la opción -L.

  6. Nuevamente realizó otra verificación del sistema de archivos para corregir cualquier error

    e2fsck /dev/fedora/root
    

    Ahora puede comprobar que su raíz se ha ampliado ejecutando lsblko comandos similares que muestran particiones.

Después de esto, también aumenté mi volumen lógico de intercambio en más de 50%, y fue igual de fácil, aunque los pasos son ligeramente diferentes, por ejemplo, no hay necesidad de e2fsckya que solo funciona para la extensión 2, 3, 4 sistemas de archivos.

1
13.02.2017, 20:29
1 ответ

Проблема была предотвращена установкой переключателя компиляции --with-local-prefix=/usr сценария оболочки configure. По умолчанию используется /usr/local, в то время как Ubuntu хранит искомые файлы в /usr. Это позволило исправить фатальные ошибки в другой компиляции из исходников HDF5 (см. https://unix.stackexchange.com/a/346171/132913)

Однако эта настройка не рекомендуется. См. GCC on-line configure help:

--with-local-prefix=dirname

Укажите каталог установки для локальных включаемых файлов. По умолчанию это /usr/local. Укажите эту опцию, если вы хотите, чтобы компилятор искал каталог dirname/include для локально установленных заголовочных файлов вместо /usr/local/include.

Вы должны указать --with-local-prefix только в том случае, если ваш сайт имеет другое соглашение (не /usr/local) о том, куда помещать файлы, специфичные для сайта.

Значением по умолчанию для --with-local-prefix является /usr/local, независимо от значения параметра --prefix. Указание --prefix не влияет на то, в каком каталоге GCC ищет локальные заголовочные файлы. Это может показаться контринтуитивным, но на самом деле это логично.

Цель параметра --prefix - указать, куда устанавливать GCC. Локальные заголовочные файлы в каталоге /usr/local/include - если вы поместите их в этот каталог - не являются частью GCC. Они являются частью других программ - возможно, многих других. (GCC устанавливает свои собственные заголовочные файлы в другой каталог, который основан на значении --prefix.)

И каталог include с локальным префиксом, и каталог include с префиксом GCC являются частью каталогов "system include" GCC. Хотя эти два каталога не являются фиксированными, их необходимо искать в правильном порядке для корректной обработки директивы include_next. Каталог include с локальным префиксом ищется перед каталогом include с префиксом GCC. Другой особенностью системных каталогов include является то, что для заголовков в этих каталогах отключены педантичные предупреждения.

Некоторые макросы autoconf добавляют опцию -I directory в командную строку компилятора, чтобы обеспечить поиск каталогов, содержащих заголовки установленных пакетов. Если каталог является одним из системных включаемых каталогов GCC, GCC будет игнорировать опцию, чтобы системные каталоги продолжали обрабатываться в правильном порядке. Это может привести к порядку поиска, отличному от указанного, но поиск в каталоге все равно будет выполнен.

GCC автоматически ищет обычные библиотеки, используя GCC_EXEC_PREFIX. Таким образом, когда один и тот же префикс установки используется и для GCC, и для пакетов, GCC будет автоматически искать и заголовки, и библиотеки. Это обеспечивает простую в использовании конфигурацию. GCC ведет себя аналогично тому, как если бы он был установлен как системный компилятор в /usr.

Сайты, которым необходимо установить несколько версий GCC, могут не захотеть использовать описанную выше простую конфигурацию. Можно использовать опции --program-prefix, --program-suffix и --program-transform-name для установки нескольких версий в один каталог, но может быть проще использовать разные префиксы и опцию --with-local-prefix, чтобы указать расположение файлов, специфичных для сайта, для каждой версии. Тогда пользователям придется явно указывать расположение локальных библиотек сайта (например, с помощью LIBRARY_PATH).

Одно и то же значение можно использовать и для --with-local-prefix, и для --prefix, если оно не является /usr. Это можно использовать, чтобы избежать поиска по умолчанию в /usr/local/include.

Не указывайте /usr в качестве --with-local-prefix! Каталог, который вы используете для --with-local-prefix, не должен содержать стандартных заголовочных файлов системы. Если он будет содержать их, некоторые программы будут неправильно скомпилированы (включая GNU Emacs на некоторых объектах), поскольку это отменит и аннулирует исправления заголовочных файлов, сделанные сценарием fixincludes.

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

Я рассмотрю эти несоответствия в другом сообщении при первой же возможности.

1
28.01.2020, 01:00

Теги

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