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.
Собрать файл 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 (все равно не работает же). Заголовок исправить - это две минуты.
Отсутствие макросов и 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 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, я так полагаю. А может и еще какие причины есть.
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
ktcc.kex binclock.c libs\libc.a -o /rd/1/clock
Who is online
Users browsing this forum: No registered users and 3 guests