Tiny C Compiler
-
Что значит последнюю? Последняя на SVN лежит. Собрать что ли нужно?
Лучше обьяснить, если ток на свн, как собирать их.
to infinity and beyond
1) Скачать исходники с SVN
2) Прочитать readme
3) Установить menuetlibc
4) Ввести make в папке с исходниками
5) Увидеть, что компиляция не удалась, так как в системе отсутствует nasm для сборки файла console.asm
6) Установить nasm
7) Увидеть, что файл не собирается nasm.
Собрать файл 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
2) Прочитать readme
3) Установить menuetlibc
4) Ввести make в папке с исходниками
5) Увидеть, что компиляция не удалась, так как в системе отсутствует nasm для сборки файла console.asm
6) Установить nasm
7) Увидеть, что файл не собирается nasm.
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 (все равно не работает же). Заголовок исправить - это две минуты.
Отсутствие макросов и sprintf - это баг melibc, и я о нем говорил. Но я не уверен, что моя версия melibc лучше, так как в ней нет printf (все равно не работает же). Заголовок исправить - это две минуты.
Ситуация осложняется тем, что tcc бородатый, а на свежую версию обновлять - это я не знаю, как.
Как и обещал, держите.
ktcc.kex, libck.a и start.o нужно держать в одной папке. Скрипт и примеры в комплекте. Если кладете include-файлы куда-то далеко, путь к ним нужно указывать. Информации об ошибках, к сожалению, не выводится - возможно, какой-то баг вызова console, или так и планировалось - не знаю, я только собирал.
ktcc.kex, libck.a и start.o нужно держать в одной папке. Скрипт и примеры в комплекте. Если кладете include-файлы куда-то далеко, путь к ним нужно указывать. Информации об ошибках, к сожалению, не выводится - возможно, какой-то баг вызова console, или так и планировалось - не знаю, я только собирал.
- Attachments
-
-
mini_c_dev.zip (89.32 KiB)Downloaded 5631 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, я так полагаю. А может и еще какие причины есть.
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 915 times
-
Спасибо.
to infinity and beyond
binclock скомпилировалась, но не запускается
to infinity and beyond
Попробуй сохранить binclock на rd:
ktcc.kex binclock.c libs\libc.a -o /rd/1/clock
ktcc.kex binclock.c libs\libc.a -o /rd/1/clock
Who is online
Users browsing this forum: No registered users and 4 guests