[C++] Пишем на языке С/C++ в Linux под KolibriOS
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Вступление
KolibriOS – миниатюрная операционная система, ядро и большинство программ которой написано на ассемблере. Это, конечно же, не значит, что на других языках программирования писать для KolibriOS нельзя.
Данная статья — инструкция по настройке toolchain'а для Linux.
Начнем
Для этого нужно скачать:
- Toolchain (Компилятор)
- SDK с FTP (Библиотеки)
- SDK с SVN
Создадим папку /home/USER/autobuild (где USER — имя пользователя). Далее создадим ссылку:
sudo ln -s /home/USER/autobuild /home/autobuild
Перейдем в /home/autobuild. Создадим дерево каталогов /home/autobuild/tools/win32. Скачаем вышеупомянутый toolchain и распакуем в /home/autobuild/tools/win32. Далее скачаем SDK с FTP и распакуем поверх /home/autobuild/tools/win32/lib и /home/autobuild/tools/win32/mingw32/lib (в двух местах — потому что в makefile'ах используется и тот и тот путь). Далее самое интересное.
Скачивание SVN
Выделите одну папку. Я буду называть здесь ее как /home/USER/KOS_SVN. Выполните в терминале:
cd /home/USER/KOS_SVN
svn co svn://kolibrios.org
Нужно подождать пока выкачается весь SVN.
Подготовка к компиляции
Чтобы была возможность использовать инструменты, надо прописать путь к папке с инструментами в переменную окружения "PATH" в файле "/etc/environment".
sudo nano /etc/environment
И добавить в конце файла:
:/home/autobuild/tools/win32/bin
Еще нужно скачать библиотеку libisl:
wget http://board.kolibrios.org/download/file.php?id=8301libisl.so.10.2.2.7z && 7z x file.php?id=8301libisl.so.10.2.2.7z
sudo mv libisl.so.10.2.2 /usr/lib/x86_64-linux-gnu && sudo ln -s /usr/lib/x86_64-linux-gnu/libisl.so.10.2.2 /usr/lib/x86_64-linux-gnu/libisl.so.10
sudo chmod go-w /usr/lib/x86_64-linux-gnu/libisl.so.10 && sudo chmod go-w /usr/lib/x86_64-linux-gnu/libisl.so.10.2.2
Еще одна известная проблема:
/home/autobuild/tools/win32/bin/../libexec/gcc/mingw32/5.4.0/cc1: error while loading shared libraries: libmpfr.so.4: cannot open shared object file: No such file or directory
Исправляется ссылкой:
sudo ln -s /usr/lib/x86_64-linux-gnu/libmpfr.so.6 /usr/lib/x86_64-linux-gnu/libmpfr.so.4
Компиляция
Примеры программ лежат в /home/USER/KOS_SVN/contrib/sdk/samples. Возьмем к примеру Cairo. Зайдем в папку и скажем make. Если все удачно, в папке появится бинарник cairo, который запускается в KolibriOS.
Еще один пример
hello.c:
#include <kos32sys.h>
char* title = "Window";
void _draw_window(){
BeginDraw();
DrawWindow(100,100,400,200,title,0x80ffffff,0x13);
EndDraw();
}
int main()
{
_draw_window();
for (;;)
{
switch(get_os_event())
{
case 1:
_draw_window();
continue;
case 2:
// key pressed, read it and ignore
get_key();
continue;
case 3:
// button pressed; we have only one button, close
if(get_os_button() == 1) return 0;
continue;
}
}
}
Для него пойдет такой Makefile (замените пробелы на tab'ы):
CC = kos32-gcc
LD = kos32-ld
SDK_DIR:= /home/USER/KOS_SVN/contrib/sdk
LDFLAGS = -static -S -nostdlib -T $(SDK_DIR)/sources/newlib/app.lds --image-base 0
CFLAGS = -c -fno-ident -O2 -fomit-frame-pointer -fno-ident -U__WIN32__ -U_Win32 -U_WIN32 -U__MINGW32__ -UWIN32
INCLUDES= -I $(SDK_DIR)/sources/newlib/libc/include
LIBPATH:= -L $(SDK_DIR)/lib -L /home/autobuild/tools/win32/mingw32/lib
SOURCES = hello.c \
$(NULL)
OBJECTS = $(patsubst %.c, %.o, $(SOURCES))
default: hello.kex
hello.kex: $(OBJECTS) Makefile
$(LD) $(LDFLAGS) $(LIBPATH) --subsystem native -o hello.kex $(OBJECTS) -lgcc -lc.dll
objcopy hello.kex -O binary
%.o : %.c Makefile $(SOURCES)
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $<
Если возникли какие-либо проблемы, пишите в комментариях.
===========
Источник:
habr.com
===========
Похожие новости:
- [Программирование, Совершенный код, C++, C] Пока смерть не разлучит нас или всё о static в C++
- [C++] ConcurrentCpp — The C++ concurrency library
- [Программирование, C++, C#] Как подружить .NET и IDA Pro (о дружбе C# и C++)
- [C++, Разработка игр, Звук] Как не надо разрабатывать звуковые движки
- [C++, C, Программирование микроконтроллеров, Системы сборки] Готовим C++. Система сборки Bake
- [C++, Читальный зал] Бьярне Страуструп о контроле над языком, удалении старых функций, заимствованиях у Rust и многом другом
- [JavaScript, C++] Какой тип числа у Number в JS?
- [Программирование, C++, Работа с 3D-графикой, Разработка игр, CGI (графика)] Vulkan. Руководство разработчика
- [Программирование, Совершенный код, C++, Проектирование и рефакторинг] Наследование реализации в С++. Реальная история (перевод)
- [C++, Читальный зал, Конференции] Герб Саттер о будущем С++, работе в комитете, фонде C++ Foundation и синтаксическом сахаре
Теги для поиска: #_c++, #_kolibrios_kolibrios_c++_linux (колибриос KolibriOS C++ linux), #_c++
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 23:39
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Вступление KolibriOS – миниатюрная операционная система, ядро и большинство программ которой написано на ассемблере. Это, конечно же, не значит, что на других языках программирования писать для KolibriOS нельзя. Данная статья — инструкция по настройке toolchain'а для Linux. Начнем Для этого нужно скачать:
Создадим папку /home/USER/autobuild (где USER — имя пользователя). Далее создадим ссылку: sudo ln -s /home/USER/autobuild /home/autobuild
Перейдем в /home/autobuild. Создадим дерево каталогов /home/autobuild/tools/win32. Скачаем вышеупомянутый toolchain и распакуем в /home/autobuild/tools/win32. Далее скачаем SDK с FTP и распакуем поверх /home/autobuild/tools/win32/lib и /home/autobuild/tools/win32/mingw32/lib (в двух местах — потому что в makefile'ах используется и тот и тот путь). Далее самое интересное. Скачивание SVN Выделите одну папку. Я буду называть здесь ее как /home/USER/KOS_SVN. Выполните в терминале: cd /home/USER/KOS_SVN
svn co svn://kolibrios.org Нужно подождать пока выкачается весь SVN. Подготовка к компиляции Чтобы была возможность использовать инструменты, надо прописать путь к папке с инструментами в переменную окружения "PATH" в файле "/etc/environment". sudo nano /etc/environment
И добавить в конце файла: :/home/autobuild/tools/win32/bin
Еще нужно скачать библиотеку libisl: wget http://board.kolibrios.org/download/file.php?id=8301libisl.so.10.2.2.7z && 7z x file.php?id=8301libisl.so.10.2.2.7z
sudo mv libisl.so.10.2.2 /usr/lib/x86_64-linux-gnu && sudo ln -s /usr/lib/x86_64-linux-gnu/libisl.so.10.2.2 /usr/lib/x86_64-linux-gnu/libisl.so.10 sudo chmod go-w /usr/lib/x86_64-linux-gnu/libisl.so.10 && sudo chmod go-w /usr/lib/x86_64-linux-gnu/libisl.so.10.2.2 Еще одна известная проблема: /home/autobuild/tools/win32/bin/../libexec/gcc/mingw32/5.4.0/cc1: error while loading shared libraries: libmpfr.so.4: cannot open shared object file: No such file or directory Исправляется ссылкой: sudo ln -s /usr/lib/x86_64-linux-gnu/libmpfr.so.6 /usr/lib/x86_64-linux-gnu/libmpfr.so.4
Компиляция Примеры программ лежат в /home/USER/KOS_SVN/contrib/sdk/samples. Возьмем к примеру Cairo. Зайдем в папку и скажем make. Если все удачно, в папке появится бинарник cairo, который запускается в KolibriOS. Еще один пример hello.c: #include <kos32sys.h>
char* title = "Window"; void _draw_window(){ BeginDraw(); DrawWindow(100,100,400,200,title,0x80ffffff,0x13); EndDraw(); } int main() { _draw_window(); for (;;) { switch(get_os_event()) { case 1: _draw_window(); continue; case 2: // key pressed, read it and ignore get_key(); continue; case 3: // button pressed; we have only one button, close if(get_os_button() == 1) return 0; continue; } } } Для него пойдет такой Makefile (замените пробелы на tab'ы): CC = kos32-gcc
LD = kos32-ld SDK_DIR:= /home/USER/KOS_SVN/contrib/sdk LDFLAGS = -static -S -nostdlib -T $(SDK_DIR)/sources/newlib/app.lds --image-base 0 CFLAGS = -c -fno-ident -O2 -fomit-frame-pointer -fno-ident -U__WIN32__ -U_Win32 -U_WIN32 -U__MINGW32__ -UWIN32 INCLUDES= -I $(SDK_DIR)/sources/newlib/libc/include LIBPATH:= -L $(SDK_DIR)/lib -L /home/autobuild/tools/win32/mingw32/lib SOURCES = hello.c \ $(NULL) OBJECTS = $(patsubst %.c, %.o, $(SOURCES)) default: hello.kex hello.kex: $(OBJECTS) Makefile $(LD) $(LDFLAGS) $(LIBPATH) --subsystem native -o hello.kex $(OBJECTS) -lgcc -lc.dll objcopy hello.kex -O binary %.o : %.c Makefile $(SOURCES) $(CC) $(CFLAGS) $(INCLUDES) -o $@ $< Если возникли какие-либо проблемы, пишите в комментариях. =========== Источник: habr.com =========== Похожие новости:
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 23:39
Часовой пояс: UTC + 5