Одним из наиболее мощных консольных текстовых редакторов в Linux является ViM (Vi iMproved – улучшенная версия редактора Vi). Для запуска редактора наберите “vim” в командной строке. Если в качестве параметра не было передано никакого имени файла, по умолчанию создается новый файл.
Принципы работы с ViM отличаются от привычного подхода к редактированию файлов. Полное описание возможностей данного редактора занимает несколько сотен man-страниц, поэтому здесь укажем только базовые его возможности, необходимые для работы.
ViM может находиться в одном из двух основных режимов работы: в режиме редактирования текста и режиме ввода команд. Индикатором режима редактирования является надпись INSERT в левом нижнем углу. Данный режим является стандартным при редактировании и трудностей не вызывает. Режим ввода команд активируется нажатием клавиши Esc. Затем можно использовать основные команды управления файлом. Команда ViM обычно задается символом ‘:’, за которым следует обозначение команды и при необходимости ее параметры.
ViM насчитывает огромное количество команд, но сейчас укажем только команды выхода и сохранения файла (командам сохранения можно указывать имя файла в качестве параметра):
:q | Выход из редактора, если файл не был модифицирован | |
:wq | Выход из редактора с сохранением файла | |
:q! | Выход из редактора без сохранения изменений | |
:w | Сохранение изменений в файле без выхода из редактора |
Компиляция и линковка программ
Предположим, вы уже написали тестовую программу при помощи редактора ViM. Процесс трансляции исходного кода в бинарный исполняемый файл состоит из двух фаз: компиляции и линковки. Обе эти операции выполняются с помощью компилятора gcc (для C++ используется компилятор g ++). Пример компиляции исходного кода:
gcc –c somefile.o somefile.c
В процессе компиляции из файла somefile.c будет создан объектный код somefile.o. Если производится компиляция нескольких исходных кодов в один объектный файл, то исходные файлы перечисляются через пробел.
Теперь скомпилированные объектные коды можно транслировать в исполняемый формат при помощи gcc с ключом –o:
gcc –o somefile somefile.o
В результате получим исполняемый файл с именем somefile. Как и в предыдущем случае, можно указать список линкуемых объектных файлов.
Обратите внимание! Результирующий файл указан без расширения. В отличие от DOS/Windows, в Linux исполняемым является файл не со специфическим расширением (.exe), а с установленным соответствующим битом в правах доступа. В среде Linux-разработчиков принято, что исполняемые файлы, как правило, не имеют расширения. Это не означает, что все файлы без расширения – исполняемые. Многие конфигурационные файлы, к примеру, также не имеют расширения. Просто следует усвоить, что в Linux расширение файла не является существенным его атрибутом.
Важно отметить, что возможна также сокращенная форма трансляции:
gcc somefile.c
При этом будут выполнены фазы компиляции и линковки, и на выходе получим исполняемый файл с именем a.out. Это один из немногих случаев наличия расширения у исполняемых файлов. При кажущейся легкости и простоте использования данный способ крайне не рекомендуется. Подобный прием может быть применен на этапе первоначальной отладки приложения, однако считается дурным тоном в программировании.
Запуск исполняемых файлов
После компиляции и линковки исходного кода в текущей директории окажется исполняемый бинарный файл. Вопреки шаблонному представлению, запустить его, набрав имя файла в командной строке, не получится. Для запуска исполняемого файла следует указать его абсолютный или относительный адрес. Обычно используется адресация относительно текущего каталога:
./somefile