Ошибка вывода при попытке компиляции содержит информацию, которую я не могу соотнести с входным кодом - PullRequest
0 голосов
/ 16 февраля 2019

Пример: myprog.c:(.text+0x18): undefined reference to 'prog.new'

Если .text+0x18 должен ссылаться на строку с ошибкой, как я могу интерпретировать .text и +0x18.

Iпонять 0x18 = 24d, но ничто в этой строке не ссылается на prog.new.

Это не номер строки и не смещение от начала строки!

Какого черта

Спасибо, Дерик

1 Ответ

0 голосов
/ 16 февраля 2019

Это не местоположение внутри файла .c, а в файле .o (хотя в нем указано «myprog.c», а не «myprog.o»)..text+0x18 означает «18-й байт после начала текстового раздела», причем текстовый раздел является частью объектного файла, содержащего исполняемый код.

Если вы получаете такие места, это означает, чточто объектный файл не содержит никакой отладочной информации, поэтому компоновщик не может восстановить номер строки и столбца из номера байта.Если вы компилируете символы отладки (-g), вы должны вместо этого получить правильные номера строк.

...