> man operating_systems
Переход на страницу  [1] 2
Модераторы: Roman I Khimov, Wanderer, Dron
Автор Добавил
NikSerg
Вторник 10.02.2009 13:30
ID пользователя #1136
Зарегистрирован: Вторник 10.02.2009 13:27
Сообщений: 4
Здравствуйте. Извините, если такая тема уже поднималась.
Каким компилятором и линковщиком C++ и с какими ключами можно получить чистый бинарник?
Т.е. COM-файл, такой, чтобы сразу начинался с команд.
Заранее благодарю
Наверх
Dron
Вторник 10.02.2009 21:58


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

$ ld --help
ld: supported targets: elf32-i386 a.out-i386-linux efi-app-ia32 elf64-x86-64 elf64-little elf64-big elf32-little elf32-big srec symbolsrec tekhex binary ihex trad-core

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

Андрей Валяев
Наверх
Сайт
NikSerg
Вторник 10.02.2009 22:20
ID пользователя #1136
Зарегистрирован: Вторник 10.02.2009 13:27
Сообщений: 4
Хм, я юзал ld. Вот батник сборки кода, может что-то не так?

cd .\compiler
gcc -ffreestanding -c -o ..\startup.o ..\startup.c
gcc -ffreestanding -c -o ..\kernel.o ..\kernel.c
ld -Ttext 0x200000 -o ..\kernel.bin ..\startup.o ..\kernel.o

Фишка в том, что если попробовать добавить в последнюю строчку --oformat binary , начинает ругаться. А с вышепреведенным алгоритмом работает нормально, однако выдает, понтно, совсем не то, что нужно.
Наверх
ossadchy
Пятница 13.02.2009 03:06
ID пользователя #941
Зарегистрирован: Среда 10.10.2007 22:55
Местонахождение: Украина, Николаевская обл., г. Первомайск
Сообщений: 181
LD должен поддерживать соответствующий формат, ну и хочется вспомнить о GNU GRUB, который прекрасно грузит ELF.
НУ и еще -- коль пишете системное ПО, все же стоит LINUX тот же поставить -- намного проще многие вещи становятся.
Наверх
Сайт
NikSerg
Пятница 13.02.2009 12:49
ID пользователя #1136
Зарегистрирован: Вторник 10.02.2009 13:27
Сообщений: 4
И все же хотелось бы без сторонних загрузчиков и под винду.
Кстати, я слышал, что в никсах есть утилита objcopy, которая вроде бы умеет преобразовывать форматы. Есть ли ее аналог под винду?
Наверх
Dreamer
Пятница 13.02.2009 17:58

ID пользователя #9
Зарегистрирован: Воскресенье 04.07.2004 14:01
Сообщений: 235
2ossadchy: главное не ставить висту, ибо с её подтверждениями теряешь кучу времени. А так, и компиляторы, и драйвер для ext2, если нужно, и виртуалки, и даже утилита dd под винду есть

2NikSerg: да, весь инструментарий есть и зовётся mingw. Однако objcopy там не то глючный, не то у меня руки кривые, в общем бинарники после него получаются кошмарные. Я использовал пакет djgpp (там всё то же - и gcc, и ld): собирает в точности как нужно. Хоть он давно не обновлялся и вообще сделан под DOS, работает отлично.

Кстати, плюс к этому еще одна радость, что в djgpp пользоваться objcopy не нужно. Всё, насколько мне помнится, делается через параметр ld --oformat=binary.

[ Редактирование Пятница 13.02.2009 18:03 ]

Жизнь на Линуксе есть!
Наверх
NikSerg
Суббота 14.02.2009 10:48
ID пользователя #1136
Зарегистрирован: Вторник 10.02.2009 13:27
Сообщений: 4
Dreamer, спасибо, попробую скачать этот пакет, хоть он, зараза, и большой
А поповоду oformat binary я писал выше. Не работает под винду.
И еще, когда я скачаю djgpp, какие именно утилиты и с какими ключами следует использовать? Ну, или где про это написано?
Наверх
Dron
Суббота 14.02.2009 16:04


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

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

Андрей Валяев
Наверх
Сайт
Dreamer
Суббота 14.02.2009 20:57

ID пользователя #9
Зарегистрирован: Воскресенье 04.07.2004 14:01
Сообщений: 235
Короче, если я правильно понимаю, вам сюда:
http://lowlevel.ru/?namespace=osdev9a

В djgpp такой проблемы нет

Жизнь на Линуксе есть!
Наверх
ossadchy
Пятница 06.03.2009 10:02
ID пользователя #941
Зарегистрирован: Среда 10.10.2007 22:55
Местонахождение: Украина, Николаевская обл., г. Первомайск
Сообщений: 181
Нормально работает и MINGW, DJGPP это давно устаревшая вешь
Наверх
Сайт
Переход на страницу  [1] 2  

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

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

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