LINUX.ORG.RU

[qmake][gcc] как вывалить ассемблерный выхлоп?


0

1

Есть программа, она собирается при помощи qmake. Она должна работать на x86 и на armv7, и ее собственно нужно оптимизировать под ARM. Для этого очень желательно видеть ассемблерный выхлоп и чтобы он был замешан с исходным C/C++ кодом для удобства (да и вообще самой возможности восприятия такого кода).

Пробовал добавить QMAKE_CXXFLAGS+=-S но никакого вывода ассемблерных файлов я так и не увидел, хотя после выполнения qmake я четко вижу в Makefile все необходимые ключи, в том числе и -S

В IDE QtCreator можно и так обойтись, но я же буду работать с программой для ARM. Конечно можно туда Qt Creator влепить, ведь на ARM тоже Ubuntu стоит, но это как-то совсем уж будет ))) да и не сильно удобно и не очень быстро.

Вопрос: как заставить qmake все же получать ассемблерные файлы и замешивать их с исходным кодом?

qmake та еще гадость. Быть может стоит посмотреть в сторону cmake, управление ключами компиляции/линковки в котором работает нормально? (да, QtCreator поддерживает cmake)

unfo ★★★★★ ()
Ответ на: комментарий от unfo

нет, к сожалению проект не совсем мой, перенести его сборку на cmake будет крайне затруднительно, очень сложный там qmake .pro-файл

желательно понять как решить задачу оставаясь на qmake, наверняка это очень очень просто и стандартно, но я что-то не всосал как это делать...

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

Сначала научиться использовать стандартные средства вместо всяких говноqmake либо сдохнуть. Потом вернуться сюда с вопросом.

anonymous ()
Ответ на: комментарий от anonymous

хорошо, как то же самое сделать в CMake? речь не о qmake, считайте что я не писал слово qmake :)

есть g++, вот комманда:

g++ test.cpp -S -o test
убираем -S получаем бинарник, добавляем -S получаем листинг, но как получать и то и то одновременно? ведь -o может быть только одно, и таким образом я не могу получить и чтобы проект собирался (он большой) и попутно листинги сыпались

I-Love-Microsoft ★★★★★ ()

Сначала компилируешь с отладочной информацией

g++ -g3 ...
потом
objdump -h -S --disassembler-options=intel-mnemonic YOUR_BINARY > YOUR_DISASSEMBLY

m0rph ★★★★★ ()
Ответ на: комментарий от m0rph

Понятное дело, что опция, включающая интеловский синтаксис актуальна для x86.

m0rph ★★★★★ ()
Ответ на: комментарий от m0rph

objdump поддерживает архитектуру Cortex-A8 (и более новые)?

и еще... гуглить я тоже умею :) эти опции компилятора уже наизусть знаю, суть в том что как их задать в qmake и других подобных системах...

сейчас вот читаю http://www.qtcentre.org/wiki/index.php?title=Undocumented_qmake там как раз пишется про QMAKE_EXTRA_COMPILERS, которое может решить мою проблему, так что qmake еще рано списывать со счетов

хотя я конечно понимаю что cmake более универсальная система сборки для кучи языков и библиотек

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от m0rph

а вообще, я кажется нашел решение, именно это - спасибо! :) почему-то ошибочно полагал что objdump только для x86, забыл что в компиляторах GCC для разных архитектур как раз оно лежит везде

QMAKE_CXXFLAGS+=-g3 добавил и получил что требовалось - листинг результирующего асма в перемешку с исходниками

I-Love-Microsoft ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.