Как я могу переопределить флаги компилятора (gcc), которые setup.py использует по умолчанию?
Я понимаю, что setup.py использует те же CFLAGS, которые использовались для создания python. У меня есть одно расширение C, которое является segfault. Мне нужно создать без -O2
, потому что -O2
оптимизирует некоторые значения и код, чтобы файлы ядра не были достаточными для устранения проблемы.
Мне просто нужно изменить setup.py, чтобы -O2
не использовался.
Я прочитал документацию distutils, в частности distutils.ccompiler
и distutils.unixcompiler
, и посмотрю, как добавлять флаги и библиотеки и включает, но не как изменить стандартные gcc-флаги по умолчанию.
В частности, это для старого продукта на Python 2.5.1 с кучей backports (Fedora 8, да, я знаю...). Нет, я не могу изменить версию ОС или python, и я не могу без больших проблем перекомпилировать python. Мне просто нужно построить один из расширений C для одного клиента, среда которого является единственной проблемой sepfault.
Ответы
Ответ 1
-
Предварительно запустите CFLAGS="-O0"
перед запуском setup.py
:
% CFLAGS="-O0" python ./setup.py
При компиляции к CFLAGS
будет добавлен -O0
, поэтому будет отменять предыдущий параметр -O2
.
-
Другой способ: добавить -O0
в extra_compile_args
в setup.py
:
moduleA = Extension('moduleA', .....,
include_dirs = ['/usr/include', '/usr/local/include'],
extra_compile_args = ["-O0"],
)
-
Если вы хотите удалить все флаги по умолчанию, используйте:
% OPT="" python ./setup.py