1) Установка компонентов
2) Добавление gcc в переменную среды Windows
3) Написание Си программы
4) Компиляция
5) Запуск
6) Устранение ошибок
Данная статья представляет собой инструкцию по установке и запуска библиотек созданных на языках C или C++, и запускаемых с помощью Python для его ускорения.
Установка компонентов
Рассмотрим создание первой простейшей программы на языке Си с помощью компилятора GCC, который на сегодняшний день является одим из наиболее популярных компиляторов для Cи и который доступен для разных платформ. Более подобному информацию о GCC можно получить на официальном сайте проекта https://gcc.gnu.org/.
Набор компиляторов GCC распространяется в различных версиях. Для Windows одной из наиболее популярных версий является пакет средств для разработки от некоммерческого проекта MSYS2. Следует отметить, что для MSYS2 требуется 64-битная версия Windows 7 и выше (то есть Vista, XP и более ранние версии не подходят)
Итак, загрузим программу установки MSYS2 по следующей ссылке: https://github.com/msys2/msys2-installer/releases/download/2022-10-28/msys2-x86_64-20221028.exe
1. Запускаем программу MSYS2
2. На первом шаге установки будет предложено установить каталог для установки. По умолчанию это каталог C:\msys64:
3. Оставим каталог установки по умолчанию (при желании можно изменить). На следующем шаге устанавливаются настройки для ярлыка для меню Пуск, и затем собственно будет произведена установка. После завершения установки нам отобразить финальное окно, в котором нажмем на кнопку Завершить.
4. После завершения установки запустится консольное приложение MSYS2.exe. Если по каким-то причинам оно не запустилось, то в папке установки C:/msys64 надо найти файл usrt_64.exe:
5. Теперь нам надо установить собственно набор компиляторов GCC. Для этого введем в этом приложении следующую команду:
- Для 64-битной системы:
pacman -S mingw-w64-ucrt-x86_64-gcc
- Для 32-битной системы:
pacman -S mingw-w64-i686-gcc
Внимание!!! Перед тем как устанавливать проверьте разрядность Python компилятора которая у вас установлена. Так как, если у вас win32, необходимо ввести команду для 32-битной системы.
Для управления пакетами MSYS2 использует пакетный менеджер Packman. И данная команда говорит пакетному менеджеру packman установить пакет mingw-w64-i686-gcc (или mingw-w64-ucrt-x86_64-gcc), который представляет набор компиляторов GCC (название устанавливаемого пакета указывается после параметра -S).
6. После завершения установки мы можем приступать к программированию на языке Си. Если мы откроем каталог установки и зайдем в нем в папку C:\msys64\mingw32\bin (если исполнена команда для 64-битной, путь: C:\msys64\ucrt64\bin), то найдем там все необходимые файлы компиляторов:
Добавление gcc в переменную среды Windows
Для упрощения запуска компилятора мы можем добавить путь к нему в Переменные среды.
1. Для этого можно в окне поиска в Windows ввести "изменение переменных среды текущего пользователя":
2. Нам откроется окно Переменных среды:
3. И добавим путь к компилятору (если 64-битная система: C:\msys64\ucrt64\bin):
4. Чтобы убедиться, что набор компиляторов GCC успешно установлен, введем следующую команду:
gcc --version
Написание Си программы
В любом из редакторов можно составить небольшую тестовую программу для проверти работоспособности. Напишем программу для вывода в консоль надпись "Hello World".
1. Запустим любой из редакторов, создадим файл lib.c и теперь определим в этом файле простейший код, который будет выводить строку на консоль:
#include <stdio.h>
int main()
{
printf("hello world\n");
// system("pause");
return 0;
}
Внимание!!! Закомментированная строка system("pause"), предназначена для исполняемых программ. Если же вы создаете исполняемый файл необходимо ее раскомментировать и запустить компиляцию.
Компиляция
Исполняемый файл:
Теперь у нас есть несколько вариантов компиляции. Если же мы хотим получить исполняемую программу в виде .exe файла, то в командную строку введем команду:
gcc lib.c -o lib
И получаем скомпилированный исполняемый файл:
Библиотека:
Для создания библиотеки, необходимо ввести команду:
gcc -shared -o lib.so -fPIC lib.c
Важно!!! Компилятор gcc так же может создавать .dll библиотеки, но в данной случае рекомендуется использовать .so, так как данная библиотека будет так же поддерживаться и на Linux платформах.
Получаем в конце скомпилированную библиотеку so:
Запуск
1. Для проверки работоспособности обычного исполняемого файла, кликаем на него два раза и получаем результат.
2. Для проверки работоспособности скомпилированной библиотеки классов, необходимо написать код на Python и подключить непосредственно через встроенную библиотеку ctypes.
Напишем небольшой код на Python:
Теперь проверяем запустив программу:
Как видим Python успешно подключил библиотеку написанную на языке Си, и вызвал функцию main.
Устранение ошибок
1. Первая из возможных ошибок, это ошибка:
OSError: [WinError 193] %1 не является допустимым приложением Win32
Объяснение: Эта ошибка сама по себе довольно серьезная, но легко решаемая. Она появляется в том случае если вы используете Python разрядности x32, а gcc установили разрядностью x64. Такая разница в разрядностях дает ошибку.
Решение: Вам необходимо вернуться в главу "Установка компонентов", пункт 5. Там непосредственно написано, что необходимо узнать разрядность Python установленного на компьютере, и ввести необходимые команды для каждой из этих разрядностей.