Есть вопрос ответ на который я пока не нашёл.
У меня gcc 4.3.3
При компиляции программ GCC подменяет некоторые функции из libC на свои из libgcc.
Например printf() на __printf_chk . Я пробовал добавлять опцию -fno-builtin .Она частично отключает некоторые подмены, но подмены для printf() так и остаются. Искал в сети как это сделать, но не нашёл ответа. Может кто знает как это обойти?
компиляция GCC под KolibriOS
-
KolibriOS-перспективная ос!
Kolibri is best operation system in the world!
-fno-builtin-printf не помогает ?
К сожалению нет.-fno-builtin-printf не помогает ?
KolibriOS-перспективная ос!
Kolibri is best operation system in the world!
Kolibri is best operation system in the world!
Ты из Линукс компилируешь ? У меня mingw gcc 4.4.0 и такой проблемы нет. Попробуй -nostdinc . Заголовочные файлы придётся собирать по частям.
Да. У меня винда XP стала глючить на уровне ядра. Во время работы может неожиданно вылететь в перезагрузку(резко).Ты из Линукс компилируешь ?
Попробую через свои инклуды. Всёравно придётся переходить от статической библиотеки к динамической.Попробуй -nostdinc . Заголовочные файлы придётся собирать по частям.
KolibriOS-перспективная ос!
Kolibri is best operation system in the world!
Kolibri is best operation system in the world!
Вот решил я собрать DLL для KolibriOS по тому же методу, что и библиотека pixlib.
Собираю из Линукса GCC. Таблицу экспорта объявляю так:
Всё компилируется. Ошибок и предупреждений нет. Но таблица экспорта не открывается в CObj и не грузиться KolibriOS. Я посмотрел объектные файлы Hex редактором.
Вот ключевое слово в объектнике библиотеки.
Но почему-то таблица экспорта не грузиться. Как должна размещаться таблица, чтобы она грузилась?
Собираю из Линукса GCC. Таблицу экспорта объявляю так:
Code: Select all
typedef struct
{
char *name;
void *function;
}__attribute__((packed))export_t;
char szSTART[] = "START";
.
.
.
export_t EXPORTS[]__attribute__((section("EXPORT")))=
{
{szSTART, start },
.
.
.
Вот ключевое слово в объектнике библиотеки.
Code: Select all
adFont szFreeFont EXPORTS * H T
KolibriOS-перспективная ос!
Kolibri is best operation system in the world!
Kolibri is best operation system in the world!
Даже, если объявлять без __attribute__((section("EXPORT"))) всёравно таблица экспорта не видна KolibriOS. Хотя таблица экспорта в объектнике есть.
KolibriOS-перспективная ос!
Kolibri is best operation system in the world!
Kolibri is best operation system in the world!
andrew_programmer
У тебя объектник наверное в ELF скомпилировался. Попробуй поставить кросскомпилятор.
У тебя объектник наверное в ELF скомпилировался. Попробуй поставить кросскомпилятор.
Если вдруг до сих пор интересно - можете посмотреть вот это http://wiki.androidfan.ru/%D0%A1%D0%B1% ... 0%BB%D1%8F
Хоть тут и описана сборка под андроид - но должен понятен быть принцип создания полной кросс-компиляции ( в том числе и без включения libgcc )
Если необходимо - могу написать как то же самое сделать на tiny C compiler + dietlibc
А для формирования нужного формата файла самый лучший вариант использовать описание структуры через ld-script
Хоть тут и описана сборка под андроид - но должен понятен быть принцип создания полной кросс-компиляции ( в том числе и без включения libgcc )
Если необходимо - могу написать как то же самое сделать на tiny C compiler + dietlibc
А для формирования нужного формата файла самый лучший вариант использовать описание структуры через ld-script
Who is online
Users browsing this forum: No registered users and 0 guests