如何用icc覆盖python的distutils gcc链接器?

gan*_*sub 4 distutils cython icc python-3.4 ubuntu-14.04

我能够从源代码在Ubuntu 14.04上成功构建cython,如本SE问题所述/回答编译cython来自icc的源代码,我从这里下载了源代码 - Cython源代码下载.

编译cython的命令是

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

我附上了构建日志.它仍然使用gcc进行链接.以下是构建日志的示例.

看来CC = icc LINKCC = icc似乎没有将链接器更改为icc.它仍在使用x86_64-linux-gnu-gcc.当我设置环境变量LDFLAGS = -lirc时,环境变量被传递给gcc而不是icc.此外,当我在BuildExecutable.py中放置print语句时,它们不会被调用.

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
Run Code Online (Sandbox Code Playgroud)

我如何解决它 ?

gan*_*sub 7

您需要覆盖链接器

通过设置export LDSHARED ="icc -shared".这会生成icc链接器.以下是通过键入构建日志的示例

CC = icc python3.4 setup.py build_ext

或者,您也可以通过键入来完成相同的操作

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
Run Code Online (Sandbox Code Playgroud)