Найти в Дзене
Vim

NeoVim как IDE для C++ ( часть 1 установка GCC и NeoVim)

В связи с большим интересом к NeoVim, я решил также попробовать его в работе. Позже я напишу, как настроить IDE для Vim.
В результате мы должны получить следующий функционал:
Вы можете и NeoVim и GCC и GDB все устанавливать из официальных репозиториев. Но я решил установить все самое свеженькое и последнее.
(Все команды будут выполняться от имени пользователя, поэтому не будем указывать символы $ и #, так как они только затрудняют копирование текста.)
Надеюсь у вас уже стоит и make и gсс. Да для того что бы скомпилировать компилятор нам нужен компилятор, если нет надо их установить
sudo apt install make g++ Внимание! Размер репозитория. почти 3.5 гигов.
cd git clone git://gcc.gnu.org/git/gcc.git
или
git clone https://github.com/gcc-mirror/gcc.git cd gcc ./configure возможно у вас может появиться такая ошибка:
для ее исправления делаем следующее (Скрипт загружает необходимые предварительные требования (prerequisites) для сборки проекта. Это могут быть сторонние библиотеки, инстру
Оглавление

В связи с большим интересом к NeoVim, я решил также попробовать его в работе. Позже я напишу, как настроить IDE для Vim.

В результате мы должны получить следующий функционал:

  • подсветка синтаксиса
  • подсветка ошибок
  • быстрое перемещение по тексту и файлам
  • удобная работа с Git
  • встроенная Нейросеть
  • встроенный переводчик (EN-RU)
  • запуск нескольких конфигураций NeoVim. (Минимум плагинов, максимум, IDE, эксперименты и прочее)
  • быстрое комментирование кода
  • и прочее.

Вы можете и NeoVim и GCC и GDB все устанавливать из официальных репозиториев. Но я решил установить все самое свеженькое и последнее.
(Все команды будут выполняться от имени пользователя, поэтому не будем указывать символы $ и #, так как они только затрудняют копирование текста.)

Надеюсь у вас уже стоит и make и gсс. Да для того что бы скомпилировать компилятор нам нужен компилятор, если нет надо их установить

sudo apt install make g++


Установка GCC из исходников

Внимание! Размер репозитория. почти 3.5 гигов.

cd
git clone git://gcc.gnu.org/git/gcc.git
или
git clone
https://github.com/gcc-mirror/gcc.git
cd gcc
./configure

возможно у вас может появиться такая ошибка:

для ее исправления делаем следующее (Скрипт загружает необходимые предварительные требования (prerequisites) для сборки проекта. Это могут быть сторонние библиотеки, инструменты или другие ресурсы, необходимые для успешной компиляции и сборки проекта.):

./contrib/download_prerequisites
./configure

Теперь можем получить эту ошибку:

cannot find -lgcc_s
cannot find -lgcc_s

Исправляем После установки gcc-multilib позволяет компилировать 32-битные и 64-битные программы на 64-битных системах, в будущем вы сможете использовать флаги -m32 или -m64 с компилятором GCC для переключения между 32-битной и 64-битной сборкой:

sudo apt install gcc-multilib
./configure

Такое обилие ошибок связано с тем что я собирал gcc на разных машинах.
собираем теперь наш gcc и идем пить чай.

make

не долго музыка играла. еще одна ошибка :) 'flex' is missing on your system

'flex' is missing on your system
'flex' is missing on your system

Исправляем, устанавливаем инструмент Flex, который является генератором лексических анализаторов. Flex используется для распознавания лексических шаблонов в текстовых входных данных и выполняет действия, связанные с этими шаблонами.

sudo apt install flex
make

Теперь ругается на

-4


Нам надо обновить конфигурацию. Давайте, все начнем с начала. Запускаем... и идем обедать. 3.5 гига быстро не скомпилируются. На сборку может понадобиться часа два если не больше.

Так же надо установить :

sudo apt-get install libgmp-dev libmpfr-dev libmpc-dev

make clean
./configure
make
sudo make install

Не прошло и трех часов... Хотя вру.. прошло больше 3х часов

-5

-6

sudo make install поместил наш gcc в /usr/local/bin/
версия скаченная из репозитория лежит в /usr/bin

-7

как видим версия с гитхаба гораздо свежее, чтобы всегда использовался наш gcc надо внести изменение в файл ~/.bashrc

vim ~/.bashrc
в конце файла добавляем:
export PATH="/usr/local/bin:$PATH"

Я ожидаю что вы уже были знакомы с Vim. Хотя возможно вы захотите изучать Vim в деле используя его как IDE ( G - переместиться в конец документа. o - вставить строку снизу. <esc> выйти из режима вставки :wq<enter> - сохранить документ и выйти из vim

обновляем настройки bash. Что бы нам не перезапускать терминал. Теперь изменения вступят в силу.

source ~/.bashrc

создаем простенький main.cpp

#include <iostream>
int main (){
std::cout << "Привет мир!" << std::endl;
return 0;
}

компилируем, запускаем

g++ main.cpp
./a.out

Опять ошибка путь в ~/.bashrc к gcc указали, а к библиотекам нет.

-8

исправляем в конце файла ~/.bashrc дописываем. Эта команда добавляет директорию /usr/local/lib64 в переменную LD_LIBRARY_PATH, которая используется для поиска динамических библиотек. Если планируете компилировать для 32 битных версий добавьте /usr/local/lib32

export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/lib32:$LD_LIBRARY_PATH

обновляем настройки bash. Что бы нам не перезапускать терминал. Теперь изменения вступят в силу.

source ~/.bashrc

Проверяем. Версия для 64 битных и 32 битных систем нормально собирается. Отлично

-9

Сборка NeoVim

Устанавливать NeoVim будем из исходных кодов. Для этого скачаем исходные коды на наш компьютер.

git clone https://github.com/neovim/neovim.git

$git clone https://github.com/neovim/neovim.git
Собираем программу:
$git clone https://github.com/neovim/neovim.git Собираем программу:
cd ~/neovim
make


Я в Ubuntu 22.04 при попытке собрать программу получил ошибку

CMake Error at /usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message):   Could NOT find Gettext (missing: GETTEXT_MSGMERGE_EXECUTABLE
  GETTEXT_MSGFMT_EXECUTABLE)
Call Stack (most recent call first):
  /usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake-3.22/Modules/FindGettext.cmake:81 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  src/nvim/po/CMakeLists.txt:1 (find_package)
CMake Error at /usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message): Could NOT find Gettext (missing: GETTEXT_MSGMERGE_EXECUTABLE GETTEXT_MSGFMT_EXECUTABLE) Call Stack (most recent call first): /usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE) /usr/share/cmake-3.22/Modules/FindGettext.cmake:81 (FIND_PACKAGE_HANDLE_STANDARD_ARGS) src/nvim/po/CMakeLists.txt:1 (find_package)

Для того что бы исправить эту ошибку необходимо установить gettext

sudo apt install gettext
-12

Теперь сборка make прошла без ошибок:

-13

далее нам необходимо установить собранную программу в наш Ubuntu

sudo make install

Проверяем

nvim

-14

Все отлично. Устанавливаем следующие программы:

sudo apt install git python3-dev gdb clang

git система для управления версиями программ.

python3-dev инструменты Питона нужны для некоторых плагинов

GDB отладчик. С его помощью мы можем отлаживать программы. Работа с ним отдельная тема.

Clang Еще один компилятор, который позволит поймать те ошибки которые пропустит g++.

Далее ... Базовая настройка NeoVim