5 votes

Comment remplacer l'éditeur de liens distutils gcc de python par icc ?

J'ai pu construire avec succès cython sur Ubuntu 14.04 à partir des sources comme expliqué dans cette question/réponse SE Compiler cython à partir des sources avec icc et j'ai téléchargé le code source d'ici - Téléchargement du code source de Cython .

La commande pour compiler cython est

CC=icc LINKCC=icc python3.4 setup.py build

Je joins le journal de construction. Il est STILL en utilisant gcc pour l'édition de liens. Voici un exemple de journal de construction.

Il semble que CC=icc LINKCC=icc fait PAS semble changer le linker en icc. Il utilise toujours x86_64-linux-gnu-gcc. Lorsque je définis la variable d'environnement LDFLAGS = -lirc, la variable d'environnement est transmise à gcc et non à icc. De plus, lorsque je place des instructions d'impression dans BuildExecutable.py ils ne sont pas appelés.

icc -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.4m -c /home/aswin/libPython/Cython-0.24/Cython/Plex/Scanners.c -o build/temp.linux-x86_64-3.4/home/aswin/libPython/Cython-0.24/Cython/Plex/Scanners.o
icc: command line warning #10006: ignoring unknown option '-fwrapv'
creating build/lib.linux-x86_64-3.4
creating build/lib.linux-x86_64-3.4/Cython
creating build/lib.linux-x86_64-3.4/Cython/Plex
x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -lirc -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 build/temp.linux-x86_64-3.4/home/aswin/libPython/Cython-0.24/Cython/Plex/Scanners.o -o build/lib.linux-x86_64-3.4/Cython/Plex/Scanners.cpython-34m.so

Comment puis-je le réparer ?

9voto

gansub Points 494

Vous devez remplacer l'éditeur de liens

en définissant export LDSHARED="icc -shared". Cela génère le linker icc. Voici un exemple du journal de construction en tapant

CC=icc python3.4 setup.py build_ext

Vous pouvez aussi faire de même en tapant

LDSHARED="icc -shared" CC=icc python3.4 setup.py build_ex

icc -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.4m -c /home/a/libPython/Cython-0.24/Cython/Plex/Scanners.c -o build/temp.linux-x86_64-3.4/home/a/libPython/Cython-0.24/Cython/Plex/Scanners.o
icc: command line warning #10006: ignoring unknown option '-fwrapv'
creating build/lib.linux-x86_64-3.4
creating build/lib.linux-x86_64-3.4/Cython
creating build/lib.linux-x86_64-3.4/Cython/Plex
icc -shared -Wl,-Bsymbolic-functions -Wl,-z,relro -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 build/temp.linux-x86_64-3.4/home/a/libPython/Cython-0.24/Cython/Plex/Scanners.o -o build/lib.linux-x86_64-3.4/Cython/Plex/Scanners.cpython-34m.so
cythoning /home/a/libPython/Cython-0.24/Cython/Plex/Actions.py to /home/a/libPython/Cython-0.24/Cython/Plex/Actions.c

0voto

kangshiyin Points 8571

Vous pourriez essayer d'ajouter -static-intel pour lier les options de manière à ce que toutes les fonctions spécifiques à Intel soient liées de manière statique.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X