Ошибка Cygwin 64 g++ -fuse-linker-plugin - программирование
Подтвердить что ты не робот

Ошибка Cygwin 64 g++ -fuse-linker-plugin

Я получаю следующую ошибку при попытке скомпилировать очень базовую программу на С++.

$ g++ -fuse-linker-plugin test.cpp
g++: fatal error: -fuse-linker-plugin, but cyglto_plugin.dll not found
compilation terminated.

код

int main() {
        return 0;
}

Это использование g++, установленное прямо из новой установки Cygwin.

Если я ищу файл там, он существует и находится по адресу:

/usr/libexec/gcc/x86_64-pc-cygwin/4.8.2/cyglto_plugin.dll

Как сделать Cygwin 64 правильно понятным?

4b9b3361

Ответ 1

Я предполагаю, что вы только проверили пакет gcc-g++ при установке. Обратите внимание, что версия 4.8.1-3, но на следующей странице вы можете увидеть множество зависимостей, установленных, например, libgcc с версией 4.8.2.

Это соединение из 4.8.1 и 4.8.2 кажется проблемой.

В программе установки скопируйте все зависимости в редактор, найдите 4.8.2, чтобы найти проблемные пакеты, вернитесь в установщик и щелкните эти пакеты, пока не будет установлено 4.8.1-3.

Двойная проверка, что вы не устанавливаете последнюю версию этих пакетов.

Ответ 2

В последнее время был установлен apt-cyg, g++ 4.9.2, но gcc-core 4.8.2 остался.

Решено:

    apt-cyg remove gcc-g++
    apt-cyg remove gcc-core
    apt-cyg install gcc-g++

Ответ 3

Две версии gcc вызывали пробой, проверяли папку /usr/libexec/gcc/x 86_64-pc-cygwin/, было бы две версии gcc. Чтобы решить удалить один.

Ответ 4

Вышеприведенный ответ сработал у меня, но я попался у установщика, автоматически обновляющего пакеты до 4.8.2. Итак, я изначально думал, что это не сработало; это на самом деле. Вам просто нужно знать об этом при использовании установщика для добавления пакетов позже, он может попытаться снова вернуться к 4.8.2 и сломать вещи.

Есть возможность отключить LTO с -fno-use-linker-plugin, но это не делает мне ничего хорошего, потому что CPAN - это запуск g++. Это может быть обходным путем.

(Я знаю, что это не очень важный ответ, но я не мог комментировать)