Python distutils путь gcc

Я пытаюсь выполнить кросс-компиляцию пакета pycrypto, но я все ближе и ближе сталкиваюсь с проблемой, которую просто не могу понять.

Я хочу, чтобы distutils использовал специальный gcc для кросс-компиляции, поэтому я установил CC env var и, похоже, соблюдает настройку для первого вызова компилятора, но это все.

export CC="/opt/teeos/buildroot/output/host/usr/bin/i586-linux-gcc"
/opt/teeos/buildroot/output/host/usr/bin/i586-linux-gcc -fno-strict-aliasing -fwrapv -Wall -Wstrict-prototypes -fPIC -std=c99 --sysroot=/opt/teeos/buildroot/output/staging -I/opt/teeos/buildroot/output/staging/usr/include/python2.7 -O3 -fomit-frame-pointer -Isrc/ -I/usr/include/python2.7 -c src/_fastmath.c -o build/temp.linux-i686-2.7/src/_fastmath.o
gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions build/temp.linux-i686-2.7/src/_fastmath.o -lgmp -o build/lib.linux-i686-2.7/Crypto/PublicKey/_fastmath.so
unable to execute gcc: No such file or directory

Я временно переместил свой системный gcc, поэтому он не может быть найден.

Как заставить distutils учитывать параметр CC=/opt/buildroot... при каждом вызове компилятора / установить путь к GCC / LD, который я хочу использовать с помощью distutils?


person tMC    schedule 13.05.2011    source источник


Ответы (1)


Это похоже на другой ответ, который я недавно дал для настройки компилятор distutils. Вам также необходимо определить LDSHARED, которая является командой, используемой для создания окончательного общего объекта. Посмотрите, работает ли это:

>>> from distutils import sysconfig
>>> sysconfig.get_config_var('LDSHARED')
'gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions'
>>> sysconfig.get_config_var('CC')
'gcc -pthread'

Затем замените gcc желаемым компилятором и параметрами в переменных среды CC и LDSHARED:

% LDSHARED="i586-linux-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions" \
  CC="i586-linux-gcc -pthread" python setup.py build
person samplebias    schedule 13.05.2011
comment
Я сейчас перестраиваю свою цепочку инструментов - я много с ней возился и хочу чистую базу; Я попробую это сделать, как только это будет сделано. Выглядит идеально! Я прочитал документацию по distutils и погуглил все, что мог придумать - где вы это нашли? - person tMC; 13.05.2011
comment
Круто, надеюсь поможет. Я нашел его, покопавшись во внутренностях distutils, что я делал несколько раз, решая связанные с этим вопросы (настраивая параметры компилятора и т.п.). - person samplebias; 13.05.2011
comment
это сделало это ... но теперь моя цепочка инструментов связывается с неправильными библиотеками. такого раньше не было - но это уже другая проблема. черт побери. Благодарность! - person tMC; 13.05.2011