2016-11-03 6 views
0

Я пытаюсь связать файлы объектов, которые изначально были созданы двумя разными ассемблерами. У нас есть некоторый устаревший ассемблерный код, который был скомпилирован в объектные файлы с использованием старого ассемблера MRI для процессора 68332. Мы разрабатываем новое приложение с GNU Binutils m68k v2.24. Мы хотели бы использовать исходные объектные файлы, созданные старым ассемблером без изменений. Для этого я настроил среду сборки. По историческим причинам наша среда сборки связана с тремя выходными форматами: Srecord, ieee и ELF. Когда я запускаю это, это происходит без ошибок для форматов Srecord и ieee. Тем не менее, для выходного формата ELF, я получаю следующие ошибки:Связывание объектных файлов разных типов

m68k-эльф-LD: не удалось объединить целевые конкретные данные файла

В результате Elf файл не создается.

Я сначала пытаюсь понять, что может означать это сообщение об ошибке, но я не смог. Если кто-то знает документацию GNU Binutils ld, чтобы указать мне, где определено определение ошибки, я был бы признателен.

Я действительно загрузил нашу цель и выполнил вывод Srecord. Кажется, что прошло много тестов так же, как и раньше, поэтому кажется, что он работает в некоторой степени.

Похоже, что наши устаревшие объектные файлы могут быть в формате формата coff. Я бы предположил, что это проблема. Есть ли способ конвертировать файл coff в формат ELF?

Заранее благодарим за любую поддержку.

ответ

1

Похоже, что наши устаревшие объектные файлы могут быть в формате формата coff. Я бы предположил, что это проблема. Есть ли способ конвертировать файл coff в формат ELF?

objcopy можно использовать для преобразования форматов. Однако для этого он должен быть настроен для понимания обоих форматов. Вы можете проверить, какие форматы он принимает с objcopy --info (сокращенный список появляется в конце objcopy --help).

Если вы objcopy не поддерживает требуемые форматы, тогда вам придется самостоятельно строить binutils.

+0

Благодарим за отзыв. Я пытался конвертировать форматы с помощью objcopy, но, по-видимому, не имел имени, которое было правильно. Я пытался ELF, когда правильный формат был elf32-m68k. Для других я закончил использование objdump с параметром -f для печати полного формата из моих старых файлов. Спасибо вам за помощь. –

Смежные вопросы