> man operating_systems
Переход на страницу  [1] 2 3 4 5 6 7 8 9
Модераторы: Roman I Khimov, Wanderer, Dron
Автор Добавил
Tommy
Вторник 19.04.2005 22:37
ID пользователя #277
Зарегистрирован: Воскресенье 17.04.2005 23:05
Местонахождение: Нефтеюганск
Сообщений: 8
Здравствуте.
У меня вопрос по поводу написания ядра на С++. Так вот. Я использую gcc . Но просто написать и собрать ядро написав все на с++ я так понял нельзя так как там линкуються ещё всякие libstdc++. То есть вот первый вопрос - они платформенно зависимые, и есть ли где нибудь по этомы информация, а то я читаю libstdc++-devel там ничего путного по-моему нет. И вот второй вопрос - может можно как нибудь обойтись без этих фалов?
Наверх
Evgeny
Среда 20.04.2005 10:28
ID пользователя #16
Зарегистрирован: Среда 07.07.2004 20:21
Местонахождение: Гомель, Беларусь
Сообщений: 17
1) Бинарно - да, насчёт source неуверен
2) Написать свою реализацию new, delete, printf, puts и т.д.
В общем всего того, что ты используешь из стандартных библиотек.
Наверх
Dron
Среда 20.04.2005 10:37


ID пользователя #13
Зарегистрирован: Понедельник 05.07.2004 11:16
Местонахождение: Москва
Сообщений: 651
ну некоторый рантайм всеравно потребуется... типа ::new/::delete
а так все зависит от того, как пишешь...

libstdc++ служит в основном для включения stl и iostream... если ты обойдешься без этого то и либа не понадобиться...

Одну из двух вечных российских проблем можно, в принципе, решить с помощью асфальтоукладчиков и катков. А вот с дорогами, конечно, будет труднее...

Андрей Валяев
Наверх
Сайт
Dron
Среда 20.04.2005 10:59


ID пользователя #13
Зарегистрирован: Понедельник 05.07.2004 11:16
Местонахождение: Москва
Сообщений: 651
вот насчет printf/puts - libstdc++ здесь как бы совсем не при чем... это libc...

Но в принципе все верно... заменяешь необходимые стандартные вещи на свои и живи без либ.

Одну из двух вечных российских проблем можно, в принципе, решить с помощью асфальтоукладчиков и катков. А вот с дорогами, конечно, будет труднее...

Андрей Валяев
Наверх
Сайт
Tommy
Среда 20.04.2005 13:55
ID пользователя #277
Зарегистрирован: Воскресенье 17.04.2005 23:05
Местонахождение: Нефтеюганск
Сообщений: 8
На счет своих реализаций я все понял - я делаю вот что:
Ничего не include просто пишу небольшую программу с использвнием там всяких синтаксических возможностей с++ - затем компилирую при помощи gcc ( в смысле не командой g++) то есть без всяких там -l... и что - получаю список необъявленых символов типа _gxx_pure_virtual или __gxx_personal там чего то потом смотрю что подлинковывает мне g++ - это libstdc++.so.5 или что то в этом роде, смотрю - он в формате elf и в нем как раз эти символы присутсвуют - но понятно что для ядра системы это совершенно неприемлимо
Наверх
Evgeny
Среда 20.04.2005 13:57
ID пользователя #16
Зарегистрирован: Среда 07.07.2004 20:21
Местонахождение: Гомель, Беларусь
Сообщений: 17
Dron написал(а) ...
вот насчет printf/puts - libstdc++ здесь как бы совсем не при чем... это libc...

это я знаю просто я имел в виду решение в общем случае, а не только применительно к libstdc++
Наверх
Evgeny
Среда 20.04.2005 14:14
ID пользователя #16
Зарегистрирован: Среда 07.07.2004 20:21
Местонахождение: Гомель, Беларусь
Сообщений: 17
Tommy написал(а) ...
... получаю список необъявленых символов типа _gxx_pure_virtual или __gxx_personal там чего то потом смотрю что подлинковывает мне g++ - это libstdc++.so.5 ...

MSVC++, к примеру, ведёт себя также - при объевлении абстрактного класса он требует наличия функции _purecall В этом случае, похоже, выход один - реализовать свою функцию _gxx_pure_virtual примерно так:

int _gxx_pure_virtual()
{
return 0;
}

По поводу _gxx_personal ничего подсказать не могу, т.к. понятия не имею что она делает
Наверх
Tommy
Среда 20.04.2005 20:14
ID пользователя #277
Зарегистрирован: Воскресенье 17.04.2005 23:05
Местонахождение: Нефтеюганск
Сообщений: 8
Не я только привел примеры, там еще мнго всяких появляеться - мне кажеться, что реализовывать просто не имеет смысла - посколько gcc кросcкомпилятор то само собой про все эти символы должно быть где то написано ну а ести нет то я вот что думаю - почти все они платформенно независимы, может кроме тех что вызывают new, там или delete и все, то может можно их просто оставить, а new и delete не использовать

<span class='smallblacktext'>[ Редактирование среда 20.04.2005 20:24 ]</span>
Наверх
Dron
Четверг 21.04.2005 10:30


ID пользователя #13
Зарегистрирован: Понедельник 05.07.2004 11:16
Местонахождение: Москва
Сообщений: 651
Тут однозначно сказать нельзя... iostream наверняка платформо зависимы - их в ядро нельзя однозначно...
stl - по большому счету это только темплейты.. они должны безболезненно внедрятся прямо в код.

кстати базовые new/delete тоже платформозависимы... их по любому надо переписывать под свой менеджер памяти.

Одну из двух вечных российских проблем можно, в принципе, решить с помощью асфальтоукладчиков и катков. А вот с дорогами, конечно, будет труднее...

Андрей Валяев
Наверх
Сайт
Tommy
Пятница 22.04.2005 07:27
ID пользователя #277
Зарегистрирован: Воскресенье 17.04.2005 23:05
Местонахождение: Нефтеюганск
Сообщений: 8
Хм, что значит что new и delete платформенно-независимы, мне же необхдимо что бы новые объекты распологались в нужной мне памяти (хотя может они используют какие-то конкретные секции), ну да ладно, я тут попробовал скоплировать простую с++ программу и засунуть её в свой загрузчик, но у меня уже даже собрать не получилось: ну компилирую, ld с подлинкованной libstdc++ все нормальн проходит но создает файлы с учетом что ззапускаються по linux (то есть располагает секции где-то 0x8000... там чего-то) ну я как всегда писал - пишу -Ttext на нужный мне адрес и тут он выдает ошибку типа не хватаает Program Header'ов - странно как-то. И я тут подумал может надо ввобще libstdc++ вообще пересобирать по мою систему.
Наверх
Переход на страницу  [1] 2 3 4 5 6 7 8 9  

Перейти:     Наверх

Транслировать сообщения этой темы: rss 0.92 Транслировать сообщения этой темы: rss 2.0 Транслировать сообщения этой темы: RDF
Powered by e107 Forum System

© OSRC.info, 2004-2010.
Авторские права на любые материалы, авторы которых явно указаны, принадлежат их авторам. По вопросам публикации таких материалов обращайтесь к авторам.
Авторские права на любые другие материалы принадлежат OSRC.info.
Сайт является помещением библиотеки. Копирование, сохранение на жестком диске или иной способ сохранения произведений осуществляются пользователями на свой риск.
При использовании материалов сайта ссылка на OSRC.info обязательна.