Настройка Eclipse CDT под кросскомпиляцию для Windows и Linux в Arch дистрибутивах
Всех приветствую, здесь будет расписана установка и настройка Eclipse CDT, компилятора MinGW в Arch Linux.
Содержание
Установка Eclipse CDT
Установка MinGW
Настройка Eclipse CDT
Заключение
Установка Eclipse CDT
Для того чтобы установить Eclipse есть разные пути, но будут рассмотрены pamac и yay.
Если у вас есть пакетный менеджер Pamac:
открываем Pamac включаем в настройках поддержку AUR;
в поиске ищем eclipse-cpp-bin, выбираем и подтверждаем установку;
помимо пакетов-зависимостей, дается на выбор один из пакетов источника java-runtime (я лично выбрал jre-openjdk 23.0.1.u0-1 extra, вряд ли это имеет большую разницу вы можете выбрать по своему усмотрению).
Не буду описывать установку yay утилиты, это прекрасно гуглится, так что открываем консоль пишем yay -S eclipse-cpp-bin и выбираем зависимость java-runtime по вашему усмотрению.
Ждём пока пакет соберётся и готово, у вас установлен Eclipse!
Установка MinGW
Здесь ещё проще чем с установкой Eclipse, открываем терминал и пишем
sudo pacman -S mingw-w64
при выборе пакетов не нужно ничего выбирать по умолчанию все найденные пакеты сами установятся, то есть просто жмём Enter. Установка окончена.
Настройка Eclipse CDT
Прежде чем настраивать профиль для компиляции под Windows, нужно установить плагин. Для этого открываем Eclipse, затем жмём Help->Install New Software.. в окне ищем кнопку Add и жмем. Появляется окно Add repository в графу Location копируем эту ссылку
https://download.eclipse.org/tools/cdt/releases/latest
Жмём Add, снизу появятся возможные к установке пакеты, в папке CDT Optional Features ищем C/C++ GCC Cross Compiler Support ставим напротив галочку и жмём снизу next, выбираем устанавливаемые пакеты, что мы им доверяем. Ждём установку, рестарт IDE и плагин установлен. Там же можете установить дополнительные плагины если они вам нужны.
Переходим к настройке профиля конфигурации. Нажимаем Project->Properties в окне выбираем C/C++ Build->Tool Chain Editor. Напротив графы Configuration нажимаем кнопку Manage Configuration, затем New, обзываем как хотим copy configuration не имеет значения. Выбираем наш новый профиль и жмём Set Active. Закрываем окошко менеджера конфигураций, В этом же окне Tool Chain Editor, выбираем Cross GCC в Current toolchain и CTD Internal Builder в Current Builder.
Теперь переходим по пути C/C++ Build->Settings проверяем чтобы выбранной конфигурацией была наша, во вкладке Tool Settings жмём Cross Settings.
В поле Prefix пишем x86_64-w64-mingw32- В поле Path нужно прописать тот путь в котором у вас находится файл x86_64-w64-mingw32-g++ лично у меня он был в папке /usr/bin.
Выполните поиск файла в файловом менеджере Thunar из корневой папки так вы найдете путь к файлу x86_64-w64-mingw32-g++.
Откройте вкладку Build Artifact в поле Artifact extension впишите exe
После этого у вас должны компилироваться файлы в формате exe. Но чтобы можно было их проверить рекомендую подключить статическую компиляцию. вернитесь во вкладку Tool Settings перейдите в окошко Cross G++ Compiler->Miscellaneous и вписываем флаги
-static-libstdc++ -static-libgcc в поле other flags(excluded from discovery)
Теперь перейдите в окошко Cross G++ Linker->Miscellaneous, впишите флаг -static в поле linker flags, тот же флаг впишите во флаги Cross GCC Assembler->General. Жмём Apply and Close. Готово!
Для компиляции на Linux используйте стандартные профили Debug или Release, так же установите в Project->Properties->C/C++ Build->Tool Chain Editor выбираем Cross GCC в Current toolchain и CTD Internal Builder в Current Builder. Переходим в C/C++ Build->Settings вкладка Build Artifact в поле Artifact extension впишите o (англ). Не забудьте перед компиляцией удостовериться что вы выбрали нужную конфигурацию.
Заключение
Теперь вы можете написать hello world, скомпилировать программу(не забудьте проверить активный профиль конфигурации и проверяйте чтобы билдер был типа CDT Internal Builder), установить wine, и запустить вашу скомпилированную программу. Для того чтобы увидеть результат hello world в Linux советую добавить строчку cin.get(); перед return 0;.
Благодарю человека под ником Azathtot за то, что помог мне с подключением компилятора к IDE. Мой тред с обсуждением этого вопроса вы можете найти здесь.
Надеюсь это кому-нибудь да поможет, успехов вам в ваших начинаниях.