LinuxForum.Fans
Тема

GCC и исходный код

Автор: Strepsils 6 сообщений 1218 просмотров
05.01.2015 05:38 #408351

Компилирую я значит код командой:

text
mpicc -Os -o bubble.o ./bubble.cpp -lstdc++

Получаю соответственно файл bubble.o.... но мне каким-то образом нужно посмотреть код, который получился после компиляции с оптимизацией. Как такое можно провернуть? Какая команда? В каком формате?

Подскажите пожалуйста.

05.01.2015 09:36 #408359

Strepsils, я думаю можно посмотреть хорошим текстовым редактором Emacs или Nano

05.01.2015 09:38 #408360
Def написал:
Strepsils, я думаю можно посмотреть хорошим текстовым редактором Emacs или Nano

Боюсь не получится. После компиляции в .o файл имеет машинный код, который читай, не читай, толку не будет. Тут другой путь должен быть.

05.01.2015 09:53 #408364
"Strepsils" написал:
Боюсь не получится. После компиляции в .o файл имеет машинный код, который читай, не читай, толку не будет. Тут другой путь должен быть

Тут вообще у вас странная команда, она используется для получения бинарника а не объектного файла, для получения объектного файла используется ключик -c и указания линковщику не требуется.
Бинарник можно собрать из объектного файла, тут уже указание линковщику будет нужно.

А так что тут смотреть, после оптимизации меняется только ассемблерный код, генерируемый компилятором, по этому достаточно просто использовать обычный текстовый редактор и ключик -S, для получения файла ассемблерного кода...
[console]$ g++ -Os -S bubble.cpp
$ ls
bubble.s[/console]

05.01.2015 12:05 #408378

Strepsils написал:
Компилирую я значит код командой:
text
mpicc -Os -o bubble.o ./bubble.cpp -lstdc++

Получаю соответственно файл bubble.o.... но мне каким-то образом нужно посмотреть код, который получился после компиляции с оптимизацией. Как такое можно провернуть? Какая команда? В каком формате?

Подскажите пожалуйста.

два варианта

1 gcc -S

2. objdump
05.01.2015 12:08 #408380

Strepsils, в догонку: lstdc++ не нужно. Используйте компилятор g++, он сам включитэту либу.

Войдите или зарегистрируйтесь, чтобы ответить.