Быстрый старт Для использования новых возможностей предоставляемых расширением KX необходимо использовать файл конфигурации tcc.conf в папке где расположен tcc Этот файл перенастраивает директорию %ktcc_root%\ на %ktcc_root%\kx. В данной директории присутствует папка lib с файлами *.def, crt.0 и libtcc.a Во избежание конфликтов бибилиотек с использованием возможностей предоставляемых расширением KX рекомендуется использовать только одну директорию с библиотеками. Если определено несколько директорий библиотек, в каждой из них не должно быть конфликтных библиотек. Например, при таком подключении библиотеки -llibc tcc ищет файлы в следующем порядке: libc.def, liblibc.def, liblibc.a Обратите внимание, что все три варианта будут правильными и будет использован первая найденная бибилиотека. Также обратите внимание, что для корректной работы приложения с расширением KX все динамические библиотеки должны быть обработаны только с *.def В остальном tcc используется как обычно (см. справку tcc) Примечание: ключ -nobss был удален, так как он не имеет смысла (ранее генерировавшаяся bss секция заполнялась нулями и занимала ненужное место в файле, эта секция не должна содержаться в образе и ядро инициализирует эту часть нялями автоматически при загрузке) Файлы определения символов Расширение KX использует файлы определений символов (*.def). Файлы *.def используют простой формат и могут создваться и редактироваться в любом удобном текстовом редакторе. Структура файла *.def описана ниже. ; Комментарии начинаются точкой с запятой и игнорируются при обработке ; ; Первая строка должна начинаться с ключевого слова LIBRARY с указанием ; имени библиотки c расширением (не более 3 симоволов после точки) LIBRARY libname.obj ; На следующей строке следует ключевое слово EXPORTS и ; опциональный ключ prefix EXPORTS [prefix] ; если задан ключ prefix, то во всех символах должен использоваться ; префикс из имени библиотеки (без расширения) со следующим за ним символом ; подчеркивания. Префикс будет отброшен при постоении таблицы импорта ; Например, для библиотеки http.obj префикс должен быть http_ ; из символа http_get в таблицу импорта будет записан символ get [libname_]entry1 [libname_]entry2 ; все остальные символы библиотеки Проверка поддержки расширения KX Для проверки, что tcc поддерживает расширение KX: 1. в командной строке наберите tcc -v Строка ниже означает, что имеется поддерка расширения KX tcc version 0.9.26 (i386 KolibriOS/KX extension) 2. В коде для условной компиляции используйте директивы препроцессора проверки предопределенного макроса __KX__, например #ifdef __KX__ // код который должен компилироваться только с расширением KX #else // код, который не зависит от расширения KX #endif Обратите внимание, что в настоящее всемя этот макрос показывает, что компилятор поддерживает расширение KX. По умолчанию этот макрос будет определен всегда, даже если Вы по каким то причинам не желаете использовать новые преимущества. При использовании текущих особенностей разделять код описанным в примере выше способом в большинстве случаев не требуется. Обеспечение совместимости Если для обеспечения совместимости необходимо отделить код, чтобы его можно было использовать как с расширением KX, так и без него, Вы можете определить дополнительный макрос и таким образом разделять код на нужные участки, например. Настоятельно рекомендуется использовать только код с поддержкой расширения KX. ... #ifdef _C_LAYER // Код который выполняется без поддержки расширения KX / использующий старый метод загрузки if(!kolibri_libimg_init()){ // Загружаем libimg.obj notify_show("Libimg.obj not loaded!' -E"); exit(0); } #endif ...