Ich konnte erfolgreich Cython auf Ubuntu 14.04 aus der Quelle erstellen, wie in dieser SE Frage/Antwort Compiling cython From source with icc erklärt, und ich habe den Quellcode von hier heruntergeladen - Cython source code download.Wie python disttips Gcc-Linker mit ICC zu überschreiben?
Der Befehl cython zu kompilieren ist
CC = icc LINKCC = icc python3.4
bauen setup.py ich das Buildprotokoll am umschließt. Es ist STILL mit gcc für die Verknüpfung. Hier ist ein Beispiel für das Erstellungsprotokoll.
Es erscheint CC = icc LINKCC = icc tut NICHT scheinen den Linker zu ICC zu ändern. Es verwendet immer noch x86_64-linux-gnu-gcc. Wenn ich die Umgebungsvariable LDFLAGS = -lirc einstelle, wird die Umgebungsvariable an gcc und nicht an icc übergeben. Auch wenn ich Druckanweisungen in BuildExecutable.py setze, werden sie nicht angerufen.
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
Wie kann ich es beheben?
gansub genannt, hast du 'LDSHARED =" icc -shared "' Umgebungsvariable gesetzt? Wie? Als 'LDSHARED =" icc -shared "CC = icc python3.4 setup.py build_ext'? – osgx
Können Sie diesen Befehl zu Ihrer Antwort hinzufügen? Es kann auch eingestellt werden, indem man es vor dem Befehl LDSHARED = etw. Hinzufügt (um die Antwort für zukünftige Besucher noch nützlicher und klarer zu machen) – osgx
gansub, ist es nicht verlinkt oder nicht gefunden? Kannst du ldd auf einer Bibliothek/ausführbaren Datei mit dem Problem ausführen? Wenn es verlinkt ist, aber nicht gefunden wurde, können Sie den Pfad der lib zu /etc/ld.so.conf oder zu LD_LIBRARY_PATH oder zu [rpath option] (https://en.wikipedia.org/wiki/Rpath) hinzufügen Verknüpfungsschritt (der "icc -shared" ist, fügen Sie die Optionen hinzu) – osgx