2016-06-19 3 views
3

Мне удалось успешно построить cython на Ubuntu 14.04 из источника, как описано в этом вопросе/ответе SE Compiling cython From source with icc, и я загрузил исходный код отсюда - Cython source code download.Как заменить python distutils gcc-линкером с icc?

Команда компиляции Cython является

CC = МЦЙ LINKCC = МЦЕ python3.4 setup.py строить

Я прилагаю журнал сборки. Это STILL с использованием gcc для связи. Вот пример журнала построения.

Появляется CC = icc LINKCC = icc NOT похоже, чтобы изменить компоновщик на icc. Он по-прежнему использует x86_64-linux-gnu-gcc. Когда я устанавливаю переменную окружения LDFLAGS = -lirc, переменная окружения передается gcc, а не icc. Также, когда я печатал заявления печати в BuildExecutable.py, они не вызываются.

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 

Как исправить это?

ответ

4

Вам необходимо переопределить компоновщику

путем установки экспорта LDSHARED = "КВК -shared". Это создает icc-компоновщик. Ниже приведен пример журнала сборки, введя

CC = МОГО python3.4 setup.py build_ext

В качестве альтернативы вы можете также сделать то же самое, введя

LDSHARED = "МЦЕ -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 
+0

gansub, вы установили 'LDSHARED =" icc -shared "переменную среды? Как? Как 'LDSHARED =" icc -shared "CC = icc python3.4 setup.py build_ext'? – osgx

+0

Можете добавить эту команду к своему ответу? Его также можно установить с добавлением его перед командой LDSHARED = smth .. (просто чтобы сделать ответ более полезным и понятным для будущих посетителей) – osgx

+0

gansub, не связан или не найден? Можете ли вы запустить ldd в некоторых библиотеках/исполняемых файлах с проблемой? Если он связан, но «не найден», вы можете добавить путь к lib к /etc/ld.so.conf или к LD_LIBRARY_PATH или к опции [rpath] (https://en.wikipedia.org/wiki/Rpath) шаг привязки (который является «icc -shared», добавьте параметры) – osgx

0

Вы можете попытаться добавить -static-intel, чтобы связать параметры, чтобы все специфические функции Intel были связаны по статичности.

+0

Я прочитал ссылку на код в вашем предыдущем вопросе. LDFLAS может быть не правильным. но вы можете проверить, есть ли что-нибудь полезное с помощью 'python setup.py -help build_ext' – kangshiyin

+0

Я запустил эту команду, и я вижу расширения для компиляторов, такие как -compiler, но не вижу их для ссылки – gansub

+0

Я поставил операторы печати в этот файл https://github.com/cython/cython/blob/master/Cython/Build/BuildExecutable.py, но это НЕ получилось вызвано – gansub