LINUX.ORG.RU

Для C типа такого:

-std=gnu11 -O3 -fstrict-aliasing -funsafe-math-optimizations -ftracer -Wall -Wextra -pedantic -Wstrict-aliasing=2 -Wformat-security -Wstrict-overflow=5 -Wfloat-equal -Wformat-extra-args -Wshadow -Winit-self -Wswitch-default -Wformat-nonliteral -Wdouble-promotion -Wnull-dereference -Walloca -Wdouble-promotion -Wduplicated-branches -Wduplicated-cond -Wchkp -Wconversion -Wlogical-not-parentheses -Walloc-zero -Wcast-qual -Wrestrict -Wformat-y2k -Wcast-align -Wlogical-op -Wwrite-strings -Wsign-conversion -Wredundant-decls -Wmissing-include-dirs -Wswitch-enum -Wstack-protector -Wunused-const-variable=2 -Wdangling-else -Wnonnull -Werror -I"include" -isystem"3rd" -flto -fno-fat-lto-objects -D_FORTIFY_SOURCE=2 -DCEXCEPTION_USE_CONFIG_FILE -D__STDC_WANT_LIB_EXT1__=1 -D__STDC_WANT_LIB_EXT2__=1 -fopenmp -fPIE -fPIC -fstack-protector-all --param ssp-buffer-size=4 -fstack-check -Wa,--noexecstack  -g3 -Wbad-function-cast -Winit-self `pkg-config --cflags тут_разные_библиотеки` -MT путь_до_объектника -MMD -MP  -c
А линкую с такими:
-pie -Wl,-z,relro,-z,now -Wl,-z,noexecstack -flto=2 -fno-fat-lto-objects -fuse-linker-plugin -Wl,-O1 -rdynamic -g3  -fopenmp -lm  -pthread `pkg-config --libs тут_разные_библиотеки`

fsb4000 ★★★★★
()
Последнее исправление: fsb4000 (всего исправлений: 1)
Ответ на: комментарий от fsb4000

Забыл добавить, что как только во все дистрибутивы завезут новый gcc, то добавлю ещё один флаг компиляции:

-mindirect-branch=thunk

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

-funsafe-math-optimizations

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

vzzo ★★★
()

Есть только одна опция — умолчальная. Всё остальное — поиск приключений на свою попу.

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

Похоже на хирургическую операцию: «Сестра, зажим! Ещё зажим!...».

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

Есть только одна опция — умолчальная

-O0, варнинги на самом минимуме

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

Софт раскидывается в исходниках на неизвестное заранее число нод, там компилируется и запускается.

Это локалхост?

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

вот да. в продакшн такое тащить точно не нужно.

Iron_Bug ★★★★★
()

В «продакшн» не компилю, а так — вот пример Makefile. В cmake примерно то же самое запихиваю:-Wall -Werror -Wextra и иногда -Wno-trampolines (т.к. новый gcc рехнулся, и не разрешает вложенных функций и еще кое-каких удобных вещей). -std=gnu99 осталось еще с древних времен (Makefile скриптом на баше генерю, который просто «рыбу» копирует в текущую директорию), когда компилятору явно нужно было стандарт указывать.

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

Бистя, ты баклажан даже по меркам модераторов ЛОР.

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

А разица не велика, что -O0 что -O1 не годятся для релизных сборок

annulen ★★★★★
()

-Weverything, дальше каждый подпроект задает свои -Wno-... в cxxFlags.

maxis11
()

что-то никто не вспомнил про -DNDEBUG ;)

zudwa
()

Кто канпелирует в продакшены подоброй фигней не заморачиааются. Ну или згают что им надо.

mos ★★☆☆☆
()

Как-то так, для RHEL7:

-Os -DNDEBUG --std=c++11 -fPIC -Wall -Werror -Wextra -fno-strict-overflow -fno-strict-aliasing -fstack-protector-all -Wlogical-op
anonymous
()

С какими опциями вы компилируете программы для продавлена в gcc или clang

Собираю:

-O2 -Wall -pedantic -std=c89
Связываю:
-lrt -lpthread
Время от времени проверяю всю программу «цппчеком» и «валграйндом».

Я заморочен на времени отклика ПО на приходящие данные, а всё производство у нас это два человека. Надеюсь, через полгода уже можно будет показать товар лицом.

Enthusiast ★★
()
5 апреля 2018 г.
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.