Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Ср сен 20, 2017 7:30 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 218 сообщений ]  На страницу Пред. 111 12 13 14 15 След.
Автор Сообщение
 Заголовок сообщения: Re: Tiny C Compiler
СообщениеДобавлено: Сб сен 12, 2015 2:35 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Вт янв 24, 2006 8:50 am
Сообщения: 249
nsvad, А чем эта версия не устроила?


Вернуться к началу
 Заголовок сообщения: Re: Tiny C Compiler
СообщениеДобавлено: Пт сен 18, 2015 12:24 pm 
не умеет компилить Колибри бинарники


Вернуться к началу
   
 Заголовок сообщения: Re: Tiny C Compiler
СообщениеДобавлено: Пт фев 05, 2016 3:47 pm 
Не в сети

Зарегистрирован: Пт фев 05, 2016 2:24 pm
Сообщения: 4
Небольшое предисловие: с Си и процессом сборки знаком не очень близко, но кое-как со скрипом получается. Решил попрактиковаться, но под Windows изобретать особо нечего. А вот в KolibriOS можно совместить приятное с полезным, и, может быть, что-нибудь удастся довести до ума и представить сообществу.
Быстрого старта, увы, не получилось, хоть и прошелся по всем мануалам, которые смог найти. Процесс сборки с помощью gcc испугал своей сложностью, поэтому решил попробовать tcc. Собирал по этой инструкции - такое впечатление, что она устарела. В процессе возникла пара проблем вместо обещаных tcc и библиотек к нему "в два клика", но обо всём по порядку.
1) Сперва была ошибка, не нашлась ф-ция WinMain@16. Глянул tcc.c, ф-ции main нет, зато есть app_main. Переименовал её в main, вроде собралось (http://prntscr.com/9zb0wn). Сделал правильно, или надо переделать?
2) Далее build.bat. Сначала выдал какую-то совсем страшную ошибку (увы, не запомнил). Заглянул внутрь, поправил CC=GCC, к CFLAGS добавил -m32 на всякий пожарный (у меня TDM-GCC-64), снова что-то не собралось. Ещё раз пригляделся, добавил AR=AR, ASM=FASM (скачал с сайта самую свежую версию, положил в C:\fasm, добавил в PATH). Вроде что-то собралось с кучей warning'ов, но melibc.a и start\start.o, упомянутых в инструкции, не появилось (UPD: start.o без проблем собрался из start.asm, а вот melibc.a по прежнему нет). Вот здесь я и затормозился. Что посоветуете?
Bat выглядит так:
Спойлер: Показать
Код:
@echo off
echo ####################################################
echo #           Melibc builder                         #
echo #  usage: build [clean]                            #
echo ####################################################
rem #### CONFIG SECTION ####
set LIBNAME=libck.a
set INCLUDE=include
set CC=GCC
set CFLAGS=-c -nostdinc -DGNUC -I"%cd%\%INCLUDE%" -m32
set AR=AR
set ASM=FASM
set dirs=stdio memory kolibrisys string stdlib
rem #### END OF CONFIG SECTION ####

set objs=
set target=%1
if not "%1"=="clean" set target=all

set INCLUDE="%cd%"
call :Target_%target%

if ERRORLEVEL 0 goto Exit_OK

echo Probably at runing has been created error
echo For help send a report...
pause
goto :eof

:Compile_C
   %CC% %CFLAGS% %1 -o "%~dpn1.o"
   if not %errorlevel%==0 goto Error_Failed
   set objs=%objs% "%~dpn1.o"
goto :eof

:Compile_Asm
   %ASM% %1 "%~dpn1.o"
   if not %errorlevel%==0 goto Error_Failed
   set objs=%objs% "%~dpn1.o"
goto :eof

:Target_clean
   echo cleaning ...
   for %%a in (%dirs%) do del /Q "%%a\*.o"
goto :Exit_OK

:Target_all
   echo building all ...
   for %%a in (%dirs%) do (
      for %%f in ("%%a\*.asm") do call :Compile_Asm "%%f"
      for %%f in ("%%a\*.c") do call :Compile_C "%%f"
   )
   %AR% -ru %LIBNAME% %objs%
   if not %errorlevel%==0 goto Error_Failed
goto Exit_OK

:Error_Failed
echo error: execution failed
pause
exit 1

:Exit_OK
echo ####################################################
echo # All operations has been done...                  #
echo # For cleaning run this script with param " clean" #
echo ####################################################
pause
exit 0

Результат - так (всё не поместилось на экране, но при беглом просмотре error'ов не вижу, только warning'и).
Заранее спасибо.


Вернуться к началу
 Заголовок сообщения: Re: Tiny C Compiler
СообщениеДобавлено: Пт фев 05, 2016 4:37 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1598
Konstantin писал(а):
Процесс сборки с помощью gcc испугал своей сложностью

Бери msvc.

_________________
Сделаем мир лучше!


Вернуться к началу
 Заголовок сообщения: Re: Tiny C Compiler
СообщениеДобавлено: Пт фев 05, 2016 5:16 pm 
Не в сети

Зарегистрирован: Пт фев 05, 2016 2:24 pm
Сообщения: 4
Спасибо за ответ.
Вообще-то, я привык работать с Code::Blocks, но поставить msvc чисто для компиляции под KolibriOS - не такая уж большая проблема (хотя предпочтительнее было бы остаться в C::B). У меня есть пара статических библиотек без внешних зависимостей (кроме стандартной библиотеки, которая, вроде бы, портирована), уже оформленных в виде проекта C::B. GCC делает из них %libname%.a файлы (могу заюзать и объектные .o, возникающие в процессе), но поймет ли их компилятор ms? Или надо сразу им собирать из C::B, а потом уже линковать к проекту VS? Или совсем никак без переноса в VS? Библиотеки написаны в c99, и изначально задумывалось собирать их вместе с основным приложением средствами tcc. Если есть не очень сложный способ настроить gcc в C::B так, чтобы он выплёвывал без лишних плясок с бубном готовый kos бинарник, я буду только рад (хватит и ссылки на неустаревшую пошаговую инструкцию: что для этого надо сделать с gcc, какие аргументы ему передавать в командной строке, откуда взять и куда положить относительно компилятора всякие библиотеки и прочие инструменты, необходимые для компиляции под kos).


Вернуться к началу
 Заголовок сообщения: Re: Tiny C Compiler
СообщениеДобавлено: Пт фев 05, 2016 5:29 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1598
Гарантированно актуальная информация - в http://websvn.kolibrios.org/filedetails ... se_gcc.lua + на выбор, http://websvn.kolibrios.org/filedetails ... etlibc.lua либо http://websvn.kolibrios.org/filedetails ... newlib.lua . Это инструкции для автосборщика, поэтому они совершенно точно работают, но могут быть не совсем очевидны для интерпретации.

lib-файлы можно найти на http://builds.kolibrios.org/eng/data/

_________________
Сделаем мир лучше!


Вернуться к началу
 Заголовок сообщения: Re: Tiny C Compiler
СообщениеДобавлено: Ср май 11, 2016 5:11 pm 
Не в сети

Зарегистрирован: Вт мар 08, 2016 11:00 pm
Сообщения: 254
Портировал новую версию 0.9.26 с гитхаба, заодно поисправлял ошибок в libc.
В целом все свои тесты компилятор проходит, хотя libc еще требует доработки.
Очень хорошая совместимость с gcc на уровне исходных текстов (расширения, встроенный асм).

В архиве родной компилятор для KOS и кросс компилятор под Win32.

Для работы под KOS пока нужно чтобы .с файлы были в корневом каталоге tcc или указывать путь ключом -B.
Использование стандартной библиотеки> ktcc hello.c -lck

Сообщения об ошибках компилятор пишет только на debugboard!

Версия обновлена 10-jun-16
Добавлены примеры
Версия обновлена 07-oct-16
Исправлен argc, вывод ошибок теперь на консоль, kos версия собрана gcc 5.4, требует libc.dll


Вложения:
ktcc_26_161007.zip [261.69 КБ]
37 скачиваний


Последний раз редактировалось Siemargl Пт окт 07, 2016 12:29 pm, всего редактировалось 10 раз.
Вернуться к началу
 Заголовок сообщения: Re: Tiny C Compiler
СообщениеДобавлено: Ср май 11, 2016 7:34 pm 
Не в сети

Зарегистрирован: Вт апр 12, 2011 11:19 pm
Сообщения: 1073
Тоесть можно пробовать повторять сборку программ написанных с использованием GCC под самой КолибриОС? Если что, то binutils портирован ранее, и линковщик есть.

_________________
я лишь учусь


Вернуться к началу
 Заголовок сообщения: Re: Tiny C Compiler
СообщениеДобавлено: Пт май 13, 2016 12:17 pm 
Не в сети

Зарегистрирован: Вт мар 08, 2016 11:00 pm
Сообщения: 254
punk_joker писал(а):
Тоесть можно пробовать повторять сборку программ написанных с использованием GCC под самой КолибриОС? Если что, то binutils портирован ранее, и линковщик есть.
Линкер в tinycc встроенный, необходимости в "родных" binutils я не вижу.
Есть свой библиотекарь tiny_libmaker.c (не проверял).

Я вижу применение tcc в трех ипостасях:
-как учебную платформу
-для маленьких утилит, с маленькой libc небольшой и исполняемый файл (можно еще урезать, сделав версию без плавающей точки)
-как родной компилятор на время отладки, т.к кросс компиляция неудобна

Окончательный же код, лучше генерировать gcc, поскольку оптимизатора в tcc нет совсем.

P.S.Если функций в libc будет не хватать, пишите или добавьте сами. Я планирую добавить консольный ввод/вывод, scanf (уже и перезалил в пост выше) и ревизовать всю libc на предмет тривиальных ошибок.

Выполнено. Большинство тестов проходит, отклонения описаны в readme и подробнее по исходникам libc


Вернуться к началу
 Заголовок сообщения: Re: Tiny C Compiler
СообщениеДобавлено: Вс июн 05, 2016 8:08 pm 
Не в сети

Зарегистрирован: Вт мар 08, 2016 11:00 pm
Сообщения: 254
Вложение:
KOSTCCdebug.png
KOSTCCdebug.png [ 27.11 КБ | 3299 просмотров ]

Теперь можно отлаживаться с исходным кодом на Си. Используем ключ -g и на выходе .dbg файл, который понимает Mtdbg

Добавлена опция -stack=size, позволяющая увеличить со стандартного размера 4096.

Добавлена маленькая ф-ция tiny_sprintf. Теперь результирующий минимальный бинарник с ней < 2Kb.

Версия обновлена в посте выше.


Вернуться к началу
 Заголовок сообщения: Re: Tiny C Compiler
СообщениеДобавлено: Чт июн 16, 2016 5:21 pm 
В сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4172
Отличная новость!
На СВН залито?

_________________
Через тернии к звездам


Вернуться к началу
 Заголовок сообщения: Re: Tiny C Compiler
СообщениеДобавлено: Пт июн 17, 2016 10:44 am 
Не в сети

Зарегистрирован: Вт мар 08, 2016 11:00 pm
Сообщения: 254
Leency писал(а):
Отличная новость!
На СВН залито?

Да. Есть недолитые последние мелкие изменения, но они пока несущественны.
Бинарная версия компилятора выше по посту обновляется регулярно. Работает стабильно, все тесты что были, пройдены.

Есть неудобство - если С-строка исходников длинная, то при переходе на нее MTDBG пытается отрисовать команду jmp *very very long c source code string* и она не влезает в окно кода, портя окно регистров и может приводить к вылетанию MTDBG. Надо его фиксить, м.б сдвинуть заодно колонку ассемблера влево.

Ну и не все строки попадают в отладочную инфу - пока думаю добавить номер строки в исходнике. Или имяфайла: номер строки. Но места мало, см пред пункт.
MTDBG не приспособлен пока показывать многострочные символьные строки. Приходится урезать показываемый исходник.

Для локальных переменных нет показываемых символов. Здесь простого решения нет - затрагивается и генерация отладочной инфы в компиляторе и MTDBG не умеет динамически подгружать символы. I wont fix. Приходится считать байты от стандартного стек фрейма.

И наверное надо выводить ошибки не на доску отладки на в консоль. Изменение элементарное.

Еще бы удобный редактор был в Колибри и можно было бы обходится без кросс компиляции в простых случаях. И очень мешает системный баг (http://bugs.kolibrios.org/view.php?id=111) в клипборде - редакторы тоже из-за него вылетают.

Есть над чем поработать еще.


Вернуться к началу
 Заголовок сообщения: Re: Tiny C Compiler
СообщениеДобавлено: Пт июн 17, 2016 4:58 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн ноя 19, 2012 5:22 pm
Сообщения: 429
Да миниутилиту напиши, которая в отладочном файле строки подрежет)

_________________
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!


Вернуться к началу
 Заголовок сообщения: Re: Tiny C Compiler
СообщениеДобавлено: Пт июн 17, 2016 5:27 pm 
Не в сети

Зарегистрирован: Вт мар 08, 2016 11:00 pm
Сообщения: 254
Я писал генерацию .dbg файла, зачем мне утилита? =)

Просто одну и ту же строку требуется показывать разной длины как адрес в коде и как операнд jmp.


Вернуться к началу
 Заголовок сообщения: Re: Tiny C Compiler
СообщениеДобавлено: Ср окт 05, 2016 11:20 pm 
В сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4172
Siemargl
Нужно добавить в автосборку в ISO версию /kolibrios/develop/ktcc
Сможешь?

_________________
Через тернии к звездам


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 218 сообщений ]  На страницу Пред. 111 12 13 14 15 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB