Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将编译器标志传递给python包安装_Python_Gcc_Heroku - Fatal编程技术网

将编译器标志传递给python包安装

将编译器标志传递给python包安装,python,gcc,heroku,Python,Gcc,Heroku,我试图安装在一个系统上,在这个系统中,我必须在非标准位置安装libsnapy dev,并且不知道如何在自动安装中包含正确的标志以帮助gcc查找dev文件 可以预见,当我尝试从github安装时 pip git+git://github.com/andrix/python-snappy 我得到一个编译错误,因为在非标准位置找不到.h文件 Running setup.py install for python-snappy building '_snappy' extension gcc -pth

我试图安装在一个系统上,在这个系统中,我必须在非标准位置安装libsnapy dev,并且不知道如何在自动安装中包含正确的标志以帮助gcc查找dev文件

可以预见,当我尝试从github安装时

pip git+git://github.com/andrix/python-snappy
我得到一个编译错误,因为在非标准位置找不到.h文件

Running setup.py install for python-snappy
building '_snappy' extension
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/app/.heroku/python/include/python2.7 -c snappymodule.cc -o build/temp.linux-x86_64-2.7/snappymodule.o
cc1plus: warning: command line option "-Wstrict-prototypes" is valid for Ada/C/ObjC but not for C++
snappymodule.cc:31:22: error: snappy-c.h: No such file or directory
snappymodule.cc:77: error: ‘snappy_status’ was not declared in this scope
snappymodule.cc:78: error: expected ‘,’ or ‘;’ before ‘{’ token
snappymodule.cc:45: warning: ‘_state’ defined but not used
snappymodule.cc:56: warning: ‘SnappyCompressError’ defined but not used
snappymodule.cc:57: warning: ‘SnappyUncompressError’ defined but not used
snappymodule.cc:58: warning: ‘SnappyInvalidCompressedInputError’ defined but not used
snappymodule.cc:59: warning: ‘SnappyCompressedLengthError’ defined but not used
snappymodule.cc:77: warning: ‘snappy_strerror’ defined but not used
error: command 'gcc' failed with exit status 1
Complete output from command /app/.heroku/python/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip_build_u41994/python-snappy/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-3otpv5-record/install-record.txt --single-version-externally-managed --compile:
running install
我只是一个构建软件的黑客,但我认为我需要设置LDFLAGS变量,如下所示:

export LDFLAGS="-L/app/vendor/snappy/usr/local/lib -L/app/vendor/snappy/usr/local/include"
然而,这并没有像上面所列的那样进入gcc调用。如何解决这个问题有什么想法吗

编辑:进度。分叉迅速且不断变化

snappymodule = Extension('_snappy',
                     libraries=['snappy'],
                     sources=['snappymodule.cc', 'crc32c.c'])

已将错误进展到

gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/app/.heroku/python/include/python2.7 -c snappymodule.cc -o build/temp.linux-x86_64-2.7/snappymodule.o -L/app/vendor/snappy/usr/local/lib -L/app/vendor/snappy/usr/local/include -I/app/vendor/snappy/usr/local/lib -I/app/vendor/snappy/usr/local/include
这意味着我们至少可以传递旗帜。仍在试图找出正确的标志是什么。手动检查仍然可以确认snappy.h已经存在

~/vendor/snappy/usr/local/include $ pwd
  /app/vendor/snappy/usr/local/include
~/vendor/snappy/usr/local/include $ ls
  snappy-c.h  snappy.h  snappy-sinksource.h  snappy-stubs-public.h

代替LD_标志,尝试CC_标志。无骰子。尝试根据正确答案分叉并添加编译参数:export-L和-I调用CCFLAGS、CFLAGS和LDFLAGS以强制解决问题。
~/vendor/snappy/usr/local/include $ pwd
  /app/vendor/snappy/usr/local/include
~/vendor/snappy/usr/local/include $ ls
  snappy-c.h  snappy.h  snappy-sinksource.h  snappy-stubs-public.h