Tiny C Compiler

...
  • Лучше обьяснить, если ток на свн, как собирать их.
    to infinity and beyond
  • 1) Скачать исходники с SVN
    2) Прочитать readme
    3) Установить menuetlibc
    4) Ввести make в папке с исходниками
    5) Увидеть, что компиляция не удалась, так как в системе отсутствует nasm для сборки файла console.asm
    6) Установить nasm
    7) Увидеть, что файл не собирается nasm.
    8) Собрать файл console.asm c помощью fasm командой
    fasm console.asm console.o
    9) Снова ввести make
    10) Увидеть, что линковка не удалась, потому что точка входа в программу (main) не найдена, и такие же проблемы с макросами va_start и va_end
    11) Обнаружить, что тело программы называется app_main вместо main, переименовать в main, добавить макросы va_start и va_end
    12) Снова дать make
    13) Получить сообщение о том, что sprintf не работает
    14) Вкомпилировать свой sprintf (из dietlibc, например) в проект
    15) Ввести make и наконец-то получить бинарник ktcc.kex
    16) Перейти в папку c библиотекой
    17) Дать make и быстренько ее собрать
    18) Скопировать libck.a, simple.c (из примеров), папку include и ktcc куда-нибудь в доступное место
    19) скомпилировать бинарник командой ktcc simple.c libck.a -o program
    20) Убедиться, что скомпиленная program не работает
    21) Еще раз прочитать readme, и убедиться, что забыл собрать файл start.o
    22) ktcc simple.c start.o libck.a -o program
    23) ....
    24) PROFIT!!!

    При желании, взять библиотеку libc.a из menuetlibc, и ее заголовочные файлы. Использовать их. Не забыть изменить start.o, чтобы работл argc/argv
  • Дело двух минут. :)
  • Действительно.. Ток не минут, а часов, а то и дней. Может всеже кто то более осведомленный в этом деле скомпилит ее?!?
    to infinity and beyond
  • Ну так я же рассказал, как я это дело за 2 минуты собрал. Полная инструкция. У меня бинарник на Linux, а я сейчас с Windows, и перезагрузиться возможности не имею. Так что придется потерпеть до вечера.
  • ради этого стоит и подождать
    to infinity and beyond
  • А не проще ли исправить заведомо неправильные моменты на СВН и данный пост добавить в начало README?
    Из хаоса в космос
  • http://websvn.kolibrios.org/filedetails ... readme.txt
    Отсутствие макросов и sprintf - это баг melibc, и я о нем говорил. Но я не уверен, что моя версия melibc лучше, так как в ней нет printf (все равно не работает же). Заголовок исправить - это две минуты.
  • Ситуация осложняется тем, что tcc бородатый, а на свежую версию обновлять - это я не знаю, как.
  • Как и обещал, держите.
    ktcc.kex, libck.a и start.o нужно держать в одной папке. Скрипт и примеры в комплекте. Если кладете include-файлы куда-то далеко, путь к ним нужно указывать. Информации об ошибках, к сожалению, не выводится - возможно, какой-то баг вызова console, или так и планировалось - не знаю, я только собирал.
    Attachments
    mini_c_dev.zip (89.32 KiB)
    Downloaded 5438 times
  • И бонус.
    ktcc + menuetlibc + libz + libfreetype + libSDL + libpng + libjpg и так далее. Инклуды прилагаются. Пример binclock тоже. Компилировать так:
    ktcc.kex binclock.c libs/libc.a -o prog

    Убедитесь, что доступ на запись для жесткого диска разрешен. А то я долго не мог понять, почему не работает (QEMU позволял создать файл, но не позволял его прочитать в режиме virtual fat).

    upd: как я уже говорил, argc/argv не работают, обращение к ним приводит к крэшу программы. Чтобы этого не было, нужно start.asm из исходников ktcc привести к crt0.asm из libc, я так полагаю. А может и еще какие причины есть.
    Attachments
    maxi_c_dev.zip (2.89 MiB)
    Downloaded 870 times
  • Спасибо.
    to infinity and beyond
  • binclock скомпилировалась, но не запускается
    to infinity and beyond
  • Попробуй сохранить binclock на rd:
    ktcc.kex binclock.c libs\libc.a -o /rd/1/clock
  • Who is online

    Users browsing this forum: No registered users and 3 guests