web-dev-qa-db-fra.com

Comment puis-je remplacer les drapeaux du compilateur (gcc) que setup.py utilise par défaut?

Je comprends que setup.py utilise les mêmes CFLAGS que ceux utilisés pour construire python. J'ai une seule extension C qui est la nôtre. J'ai besoin de le construire sans-O2 Parce que -O2 Optimise certaines valeurs et certains codes afin que les fichiers de base ne soient pas suffisants pour identifier le problème.

J'ai juste besoin de modifier setup.py pour que -O2 Ne soit pas utilisé.

J'ai lu la documentation de distutils, en particulier distutils.ccompiler Et distutils.unixcompiler Et j'ai vu comment ajouter des drapeaux et des bibliothèques et des inclusions, mais pas comment modifier les drapeaux gcc par défaut.

Plus précisément, il s'agit d'un produit hérité sur Python 2.5.1 avec un tas de rétroportages (Fedora 8, oui, je sais ...). Non, je ne peux pas changer la version du système d'exploitation ou python et je ne peux pas, sans grands problèmes, recompiler python. J'ai juste besoin d'en créer une à partir de l'extension C pour un client dont l'environnement est le seul à se briser.

50
Wayne Walker
  • Prepend CFLAGS="-O0" avant d'exécuter setup.py:

    % CFLAGS="-O0" python ./setup.py
    

    Le -O0 sera ajouté à CFLAGS lors de la compilation, par conséquent, remplacera le précédent -O2 réglage.

  • Une autre façon consiste à ajouter -O0 à extra_compile_args dans setup.py:

    moduleA = Extension('moduleA', .....,
            include_dirs = ['/usr/include', '/usr/local/include'], 
            extra_compile_args = ["-O0"], 
            )
    
  • Si vous souhaitez supprimer tous les indicateurs par défaut, utilisez:

    % OPT="" python ./setup.py
    
68
clsung