Я понял, что файл> = 5.30 или gcc> = 6.3 изменили его поведение. Когда я компилирую базовую программу, такую как hello-world, вывод файла указывает, что исполняемый файл elf включает какой-то «debug_info».Почему файловая команда заявляет, что исполняемый файл содержит «debug_info»
Источник:
#include <iostream>
using namespace std;
int main(int argc, char* argv []) {
cout << "Hello world.\n";
return 0;
}
Compile:
$ g++ -o hello hello.cpp # notice, no option "-g"
Осмотреть:
$ file hello # please scroll to the right hand-side, it is at the very end
hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=d03b68ed8618fcb97094b18157054f7cc2030f3c, not stripped, with debug_info
Я не знаком с readelf. A readelf -S hello | grep -i debug указывает, что нет отладочной информации при компиляции без «-g». Если скомпилирован с опцией «-g», я вижу это, что выглядит хорошо для меня:
[27] .debug_aranges PROGBITS 0000000000000000 0000107c
[28] .debug_info PROGBITS 0000000000000000 000010ac
[29] .debug_abbrev PROGBITS 0000000000000000 000038ce
[30] .debug_line PROGBITS 0000000000000000 00003e54
[31] .debug_str PROGBITS 0000000000000000 00004186
Я предполагаю, что никто не использовал скрытый Configure-флаг во время сборки моего освобождения НКУ, всегда включают в себя какой-то отладочной информации. Поэтому, вероятно, изменилось поведение утилиты файл. Что делает файл означает «debug info»?
Я использую GNU/Linux (Archlinux) на X86_64, все обновления обновлены.
Дружественное примечание: «все пакеты обновлены». не означает, что компилятор или какие-либо намеки на версию компилятора. Распространение могло бы прекратить обновление GCC в 3.3.4 для всех, что мы знаем. Это было бы экстремально, но более чем несколько крупных дистрибутивов, похоже, остановились на 4.8 и 4.9. Лучше всего запускать 'g ++ -v' и добавлять версию к будущим вопросам там, где это необходимо. – user4581301
Вы правы, но я добавил версию-info уже в верхней части вопроса. В примечании в конце следует просто предоставить контекстуальную информацию. – Peter