如何使用icc覆盖python的distutils gcc链接器? [英] How to override python's distutils gcc linker with icc?

查看:304
本文介绍了如何使用icc覆盖python的distutils gcc链接器?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如本SE问题/答案使用icc从源代码编译cython,我从这里下载了源代码- Cython源代码下载

I was able to successfully build cython on Ubuntu 14.04 from source as explained in this SE question/answer Compiling cython From source with icc and I downloaded the source code from here - Cython source code download.

编译cython的命令是

The command to compile cython is

CC = icc LINKCC = icc python3.4设置。 py build

我附上了构建日志。使用gcc进行链接仍然。这是一个构建日志示例。

I am enclosing the build log. It is STILL using gcc for linking. Here is a sample of build log.

似乎CC = icc LINKCC = icc确实似乎已将链接器更改为icc。它仍在使用x86_64-linux-gnu-gcc。当我设置环境变量LDFLAGS = -lirc时,环境变量将传递给gcc而不是icc。
另外,当我将打印语句放在 BuildExecutable.py中时他们没有被呼叫。

It appears CC=icc LINKCC=icc does NOT seem to change the linker to icc. It is still using x86_64-linux-gnu-gcc. When I set the environmental variable LDFLAGS = -lirc the environmental variable is being passed to gcc and not to icc. Also when I put print statements in BuildExecutable.py they are not getting called.

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

如何解决?

推荐答案

您需要通过设置export LDSHARED = icc -shared覆盖链接器

You need to override the linker

。生成icc链接器。这是通过输入

by setting export LDSHARED="icc -shared". That generates the icc linker. Here is an example of the build log by typing

CC = icc python3.4 setup.py build_ext

CC=icc python3.4 setup.py build_ext

创建日志的示例或者,您也可以通过输入

Alternatively you can also do the same by typing

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

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

这篇关于如何使用icc覆盖python的distutils gcc链接器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆