2010-09-12 3 views
0

У меня есть некоторые проблемы со связыванием моей сборки. Я использую NASM для сборки, а затем связываю его с ld. Одна из незначительных проблем заключается в том, что директива GLOBAL работает только в том случае, если я определяю раздел .data, который .. Я считаю, что у него есть что-то разумное, но все же как это важно для экспорта символов? (я решил использовать coff, так как это был самый похожий формат с тем, что вышло из g ++ с опцией -c). Основная проблема заключается в том, что даже после того, как мне удалось связать ее, вызовы ведут к некоторому адресу, а функции там нет. Thx для вашего чтения времени, и если бы у вас были какие-то советы или, возможно, ключевые слова, я должен google, чтобы получить что-то о ссылках и символах, это было бы прекрасно.Структура объектных файлов

+1

С какой ОС и архитектурой вы работаете? – llasram

+0

Windows XP, архитектура ... ну .. это x86, что вы надумали? – Pyjong

+0

Как вы уже упоминали nasm, я в основном думал о x86 против x86-64 - с XP я предполагаю 32-разрядную x86? – llasram

ответ

1

Я не использовал nasm для Windows, но посмотрел вывод nasm -hf. Я думаю, вы хотите формат win32, а не coff. Формат COFF - это формат более старого объектного файла, из которого теперь используется PE-COFF (или просто «PE»), используемый в Windows, - это более новая версия.

Что касается того, почему вам нужно указать раздел, прежде чем ваши директивы GLOBAL вступят в силу, я не вижу этого поведения. Возможно, вы не объявляли свой GLOBAL перед ярлыком? Или, возможно, символ испускается, но не смог обеспечить правильную связь, например, он был предназначен как переменная данных, но имел место в разделе .text.

+0

yep win32 формат в значительной степени сохраняет день .., который я бы еще потратил на проб и ошибок. большое спасибо. о глобальной директивной вещи, возможно ли, что nasm генерирует некоторый раздел по умолчанию? Я где-то читал, что masm делает это. Во всяком случае, хотя моя проблема решена, я все еще открыт для более подробной информации о том, как работают форматы объектов – Pyjong