LINUX.ORG.RU

[distutils, python, gcc] параметры запуска gcc


0

0

Как в скрипте сборки C-расширения для Python переопределить параметры компиляции для GCC?

setup.py выглядит примерно так:

from distutils.core import setup, Extension
module1 = Extension(’module1',
                    sources = [’module1.c’])
setup (name = ’package1’,
       ext_modules = [module1])

Сейчас все собирается с -pthread -DNDEBUG -march=i686 -mtune=generic -O2 -pipe -march=i686 -fPIC -g -I/usr/include/python2.6.

В частности, хотелось бы отключить оптимизацию: вместо -O2 задать -O0.


Ответ на: комментарий от ananas

Спасибо. Так вызывается

gcc -pthread -DNDEBUG -march=i686 -mtune=generic -O2 -pipe -march=i686 -O0 -fPIC -g -I/usr/include/python2.6 
и -O0 перекрывает -O2.

Хотя есть еще один небольшой момент. Судя по gcc -O0 -Q --help=optimizers | grep enabled даже при -O0 остаются включенными еще достаточно опций оптимизации:

  -falign-loops                     [enabled]
  -fargument-alias            	   [enabled]
  -fasynchronous-unwind-tables 	  [enabled]
  -fbranch-count-reg          		[enabled]
  -fcommon                    		[enabled]
  -fdce                       		[enabled]
  -fdse                       		[enabled]
  -fearly-inlining            		[enabled]
  -fgcse-lm                   		[enabled]
  -finline-functions-called-once 	[enabled]
  -fivopts                    		[enabled]
  -fjump-tables               		[enabled]
  -fmove-loop-invariants      		[enabled]
  -fpeephole                  		[enabled]
  -frename-registers          		[enabled]
  -frerun-cse-after-loop      		[enabled]
  -fsched-interblock          		[enabled]
  -fsched-spec                		[enabled]
  -fsched-stalled-insns-dep   		[enabled]
  -fsigned-zeros              		[enabled]
  -fsplit-ivs-in-unroller     		[enabled]
  -ftoplevel-reorder          		[enabled]
  -ftrapping-math             		[enabled]
  -ftree-cselim               		[enabled]
  -ftree-loop-im              		[enabled]
  -ftree-loop-ivcanon         		[enabled]
  -ftree-loop-optimize        		[enabled]
  -ftree-reassoc              		[enabled]
  -ftree-scev-cprop           		[enabled]
  -ftree-vect-loop-version    		[enabled]
  -fvar-tracking              		[enabled]
  -fvect-cost-model           		[enabled]
  -fweb                       		[enabled]

И в результате даже с -O0 в отладчике некоторые переменный оказываются <optimized out>. Был бы какой-нибудь -O-minus-1, чтобы их отключить все сразу, не разбираясь из-за какой это, а не поименно через -fno-*...

ipc
() автор топика
Ответ на: комментарий от ananas

Судя по man'у, ничего лучше чем -fno-* поименно для каждой из этих 30-и не ожидается. Но, в общем, и так пойдет.

ipc
() автор топика

Почитай доки по setuptools. Там все есть.

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