Откуда взялась опция «-O2» в cmake и как ее удалить?Linux

Ответить
Anonymous
 Откуда взялась опция «-O2» в cmake и как ее удалить?

Сообщение Anonymous »

Я пытаюсь пересобрать пакет perl-BSSolv из исходного кода в opensuse 15.5 и выполнить отладку с помощью нового пакета сборки. Мне нужно удалить параметр оптимизации -O2 или -O3, прежде чем я начну собирать пакет debuginfo. Вот что я попробовал:
Я меняю строки в CMakeLists.txt, как показано ниже:

Код: Выделить всё

set (CMAKE_C_FLAGS     "${CMAKE_C_FLAGS} -Wall")
set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS} -O2")
set (CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS} -g -O0")
set (CMAKE_C_FLAGS_DEBUG     "${CMAKE_C_FLAGS} -g3 -O0")
в

Код: Выделить всё

set (CMAKE_C_FLAGS      -Wall")
set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS} -O0")
set (CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS} -g -O0")
set (CMAKE_C_FLAGS_DEBUG     "${CMAKE_C_FLAGS} -g3 -O0")
затем запустите rpmbuild -ba SPEC/xxx.spec, чтобы пересобрать пакет и переустановить пакеты с помощью команды ниже:

Код: Выделить всё

rpm -ivh --replacepkgs --replacefiles RPMS/x86_64/xxx-*.rpm
но когда я установил новые пакеты и попытался выполнить отладку с помощью GDB, все равно были некоторые неожиданные результаты, такие как оптимизация переменных и неожиданный скачок в коде.
Выполните команду ниже:
р>

Код: Выделить всё

readelf --debug-dump=info FILE_I_BUILD.so|grep  "DW_AT_producer"
Я вижу вывод типа:

Код: Выделить всё

      DW_AT_producer    : (indirect string, offset: 0x1d): GNU AS 2.43.1
   DW_AT_producer    : (indirect string, offset: 0x655): GNU C11 7.5.0 -mtune=generic -march=x86-64 -g -O2 -fwrapv -fno-strict-aliasing -fstack-protector-strong -fmessage-length=0 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -fPIC
   DW_AT_producer    : (indirect string, offset: 0xb77b): GNU C11 7.5.0 -m64 -mtune=generic -march=x86-64 -g -g -O2 -O2 -O0 -fmessage-length=0 -fPIC -fmessage-length=0 -fstack-protector -funwind-tables -fasynchronous-unwind-tables

Опция «-O2» все еще существует, похоже, мои настройки в CMakeLists.txt не изменили параметры оптимизации при сборке пакета.
Откуда взялась эта опция «-O2» и как его удалить?

Подробнее здесь: https://stackoverflow.com/questions/792 ... -remove-it
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»