Да, удаление после связывания приведет к удалению глобальных символов, которые включены в библиотеку C++, например. Вы можете получить g++
, чтобы сделать это, используя опцию -s
. Он делает отладку приложения на сайте клиента (например, говорит клиенту, что он запускает gdb myprog
, а затем делает bt
, когда он разбился, не даст вам никаких символов - гораздо сложнее узнать, где был код, если у вас нет одинакового двоичного кода с символами [или может воспроизвести один], и вы можете найти в нем символы [или вы можете воспроизвести проблему, но это принятие желаемого за действительное много времени]).
Если вы хотите использовать небольшой код, вы также можете использовать -Os вместо -O3, что заставит компилятор генерировать оптимизированный код, но не делает оптимизацию, которая делает код более крупным (так что только встроенные крошечные функции, а не разворачиваемые контуры , и т.д). Для НЕКОТОРЫХ случаев маленький код работает быстрее, чем «более высокий уровень оптимизации», но более крупный код, потому что функции среднего размера, которые вызываются во многих местах, остаются как одна функция, которая находится в кеше, а не встраивается и раздувается заявление.
К сожалению, часто трудно сказать, какой эффект имеет какой-либо конкретный вариант на размер исполняемого файла - в некоторых случаях вложение делает для меньшего кода, в других случаях код делает дольше. Развертка цикла со счетом 2 делает более короткий код, чем выполнение одной и той же вещи в цикле и т. Д. И т. Д. Если вам нужен быстрый и малый код, вам придется заниматься скриптингом и посмотреть, какие из них влияют на ВАШЕ код. Убедитесь, что вы отслеживаете, какой эффект вы получаете от каждого варианта. Существует довольно много разных вариантов оптимизации, перечисленных here (это для 4.9.1, вы можете найти онлайн-версии старых руководств также на сайте gcc).
Ах - раздражающие пользователи снова пытаются опротестовывать людей, задавая вопрос, когда им нужна помощь ... – YasserAsmi
Да, очень популярно проголосовать, не оставляя никаких полезных комментариев, что, на мой взгляд, совершенно бессмысленно. Я не вижу в этом вопросе ничего плохого. –