2016-03-15 2 views
0

После компиляции программы на C вы получаете файл .o. Я знаю, что это файл, состоящий из «0 и 1», и если он сформирован после успешной компиляции программы. Но я хочу посмотреть, что находится в файле!Как открыть файл .o?

+4

Пожалуйста, не используйте теги с тегами C и C++ с двумя тегами - это раздражает людей. Поскольку вы спрашиваете об объектном файле из программы C, то подходит тег C. –

+1

Что вы хотите видеть и какие у вас есть инструменты? Вы можете увидеть байты или слова с помощью таких инструментов, как 'od'. Если вы хотите увидеть структуру, вам нужен инструмент, который понимает объектные файлы. В файле содержится информация, необходимая для использования файла объекта - список обозначенных символов и ссылок, а также информация об исправлениях, которые необходимы при загрузке кода для выполнения и т. Д. Также может быть номер строки и другая информация об отладке , слишком. –

+0

О, ладно! Я очень новичок в этом! Я позабочусь в следующий раз! Ты знаешь ответ? –

ответ

6

У вас есть несколько вариантов выбора здесь.

Во-первых (и проще всего) использовать что-то, что декодирует файл, чтобы показать вам, что это такое. objdump на linux делает это.

gcc -c test.c 

дает test.o

objdump -D test.o 

будет декодировать файл и показать вам, что в нем на стандартный вывод (так трубы его меньше или аналогичный) Objdump вывод показывает Вам несвязанный объектный файл , Адреса недействительны и должны быть исправлены компоновщиком.
формат первый номер строки затем некоторое количество байт, инструкции процессора, которые показаны в hexadecimal.eg 14 средств 00010100 Далее идет команда, что эти прощания представляют

0: 14 00     adc $0x0,%al 

так выше мы имеем линию 0 функции - это несвязанный) 14 00 - это байты они означают сложение с переносом 0 в спе регистр, хранящем результат в аль

Другой альтернативой является использование шестнадцатеричного редактора и попытаться выясните, что означает 14 00 без любая помощь.

Удачи.

0

просто используйте шестнадцатеричный редактор. Позволяет находить шаблоны данных в файлах с несколькими гигабайтами за считанные секунды. Это мощно. Поддерживает поиск регулярных выражений по файлам. Это удобно. Позволяет создавать патчи файлов всего за один клик. Это умно. Это гибко. Это эффективно.