• <tfoot id='qA9eH'></tfoot>

    <small id='qA9eH'></small><noframes id='qA9eH'>

      <bdo id='qA9eH'></bdo><ul id='qA9eH'></ul>
    1. <i id='qA9eH'><tr id='qA9eH'><dt id='qA9eH'><q id='qA9eH'><span id='qA9eH'><b id='qA9eH'><form id='qA9eH'><ins id='qA9eH'></ins><ul id='qA9eH'></ul><sub id='qA9eH'></sub></form><legend id='qA9eH'></legend><bdo id='qA9eH'><pre id='qA9eH'><center id='qA9eH'></center></pre></bdo></b><th id='qA9eH'></th></span></q></dt></tr></i><div id='qA9eH'><tfoot id='qA9eH'></tfoot><dl id='qA9eH'><fieldset id='qA9eH'></fieldset></dl></div>
      <legend id='qA9eH'><style id='qA9eH'><dir id='qA9eH'><q id='qA9eH'></q></dir></style></legend>

      1. Debian 8 上的 Python numba/llvmlite - 我无法构建 llvmlite

        时间:2023-11-08
        • <bdo id='tI5B0'></bdo><ul id='tI5B0'></ul>
          <i id='tI5B0'><tr id='tI5B0'><dt id='tI5B0'><q id='tI5B0'><span id='tI5B0'><b id='tI5B0'><form id='tI5B0'><ins id='tI5B0'></ins><ul id='tI5B0'></ul><sub id='tI5B0'></sub></form><legend id='tI5B0'></legend><bdo id='tI5B0'><pre id='tI5B0'><center id='tI5B0'></center></pre></bdo></b><th id='tI5B0'></th></span></q></dt></tr></i><div id='tI5B0'><tfoot id='tI5B0'></tfoot><dl id='tI5B0'><fieldset id='tI5B0'></fieldset></dl></div>
          • <legend id='tI5B0'><style id='tI5B0'><dir id='tI5B0'><q id='tI5B0'></q></dir></style></legend>
            <tfoot id='tI5B0'></tfoot>
                <tbody id='tI5B0'></tbody>

                <small id='tI5B0'></small><noframes id='tI5B0'>

                  本文介绍了Debian 8 上的 Python numba/llvmlite - 我无法构建 llvmlite的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我正在尝试在 Debian 8 系统上安装 numba,如下所述:http://llvmlite.pydata.org/en/latest/install/index.html(第 2.2.3 节).

                  Im trying to install numba on a Debian 8 system as described here: http://llvmlite.pydata.org/en/latest/install/index.html (secion 2.2.3).

                  我已经安装了 LLVM 3.5,它似乎找到了它,但是在使用 setup.py 构建 llvmlite 时我不断收到错误:

                  I have installed LLVM 3.5 and it seems to find it but i keep getting errors when building llvmlite with setup.py:

                  # python setup.py build
                  

                  这是完整的输出:

                  running build
                  got version from VCS {'version': '0.9.0.dev+7.gf5a7007.dirty', 'full': 'f5a70072ce0e7f5e432d6645056a60b00f957c66.dirty'}
                  running build_ext
                  /usr/bin/python ffi/build.py
                  LLVM version... 3.5.0
                  # static-libstdc++ avoids runtime dependencies on a
                  # particular libstdc++ version.
                  g++ -static-libstdc++ -shared -flto `llvm-config-3.5 --cxxflags` -fno-rtti -g assembly.cpp bitcode.cpp core.cpp initfini.cpp module.cpp value.cpp executionengine.cpp transforms.cpp passmanagers.cpp targets.cpp dylib.cpp linker.cpp -o libllvmlite.so -flto `llvm-config-3.5 --ldflags` -Wl,--exclude-libs=ALL `llvm-config-3.5 --system-libs --libs all`
                  assembly.cpp: In function ‘LLVMOpaqueModule* LLVMPY_ParseAssembly(LLVMContextRef, const char*, const char**)’:
                  assembly.cpp:25:64: error: ‘parseAssemblyString’ was not declared in this scope
                       Module *m = parseAssemblyString(ir, error, *unwrap(context)).release();
                                                                                  ^
                  bitcode.cpp: In function ‘void LLVMPY_WriteBitcodeToString(LLVMModuleRef, const char**, size_t*)’:
                  bitcode.cpp:13:62: error: ‘LLVMWriteBitcodeToMemoryBuffer’ was not declared in this scope
                       LLVMMemoryBufferRef MB = LLVMWriteBitcodeToMemoryBuffer(M);
                                                                                ^
                  core.cpp: In function ‘void LLVMPY_SetCommandLine(const char*, const char*)’:
                  core.cpp:36:46: error: ‘LLVMParseCommandLineOptions’ was not declared in this scope
                       LLVMParseCommandLineOptions(2, argv, NULL);
                                                                ^
                  module.cpp: In function ‘LLVMOpaqueModule* LLVMPY_CloneModule(LLVMModuleRef)’:
                  module.cpp:223:29: error: ‘LLVMCloneModule’ was not declared in this scope
                       return LLVMCloneModule(M);
                                               ^
                  executionengine.cpp: In function ‘LLVMOpaqueExecutionEngine* create_execution_engine(LLVMModuleRef, LLVMTargetMachineRef, char**)’:
                  executionengine.cpp:72:74: error: no matching function for call to ‘llvm::EngineBuilder::EngineBuilder(std::unique_ptr<llvm::Module>)’
                       llvm::EngineBuilder eb(std::unique_ptr<llvm::Module>(llvm::unwrap(M)));
                                                                                            ^
                  executionengine.cpp:72:74: note: candidates are:
                  In file included from executionengine.cpp:6:0:
                  /usr/lib/llvm-3.5/include/llvm/ExecutionEngine/ExecutionEngine.h:594:3: note: llvm::EngineBuilder::EngineBuilder(llvm::Module*)
                     EngineBuilder(Module *m) : M(m) {
                     ^
                  /usr/lib/llvm-3.5/include/llvm/ExecutionEngine/ExecutionEngine.h:594:3: note:   no known conversion for argument 1 from ‘std::unique_ptr<llvm::Module>’ to ‘llvm::Module*’
                  /usr/lib/llvm-3.5/include/llvm/ExecutionEngine/ExecutionEngine.h:570:7: note: llvm::EngineBuilder::EngineBuilder(const llvm::EngineBuilder&)
                   class EngineBuilder {
                         ^
                  /usr/lib/llvm-3.5/include/llvm/ExecutionEngine/ExecutionEngine.h:570:7: note:   no known conversion for argument 1 from ‘std::unique_ptr<llvm::Module>’ to ‘const llvm::EngineBuilder&’
                  /usr/lib/llvm-3.5/include/llvm/ExecutionEngine/ExecutionEngine.h:570:7: note: llvm::EngineBuilder::EngineBuilder(llvm::EngineBuilder&&)
                  /usr/lib/llvm-3.5/include/llvm/ExecutionEngine/ExecutionEngine.h:570:7: note:   no known conversion for argument 1 from ‘std::unique_ptr<llvm::Module>’ to ‘llvm::EngineBuilder&&’
                  executionengine.cpp: In function ‘uint64_t LLVMPY_GetGlobalValueAddress(LLVMExecutionEngineRef, const char*)’:
                  executionengine.cpp:107:46: error: ‘LLVMGetGlobalValueAddress’ was not declared in this scope
                       return LLVMGetGlobalValueAddress(EE, Name);
                                                                ^
                  executionengine.cpp: In function ‘uint64_t LLVMPY_GetFunctionAddress(LLVMExecutionEngineRef, const char*)’:
                  executionengine.cpp:114:43: error: ‘LLVMGetFunctionAddress’ was not declared in this scope
                       return LLVMGetFunctionAddress(EE, Name);
                                                             ^
                  executionengine.cpp: At global scope:
                  executionengine.cpp:187:45: error: ‘llvm::MemoryBufferRef’ has not been declared
                                                         llvm::MemoryBufferRef MBR)
                                                               ^
                  executionengine.cpp:200:49: error: conflicting return type specified for ‘virtual std::unique_ptr<llvm::MemoryBuffer> LLVMPYObjectCache::getObject(const llvm::Module*)’
                       virtual std::unique_ptr<llvm::MemoryBuffer> getObject(const llvm::Module* M)
                                                                   ^
                  In file included from executionengine.cpp:8:0:
                  /usr/lib/llvm-3.5/include/llvm/ExecutionEngine/ObjectCache.h:36:25: error:   overriding ‘virtual llvm::MemoryBuffer* llvm::ObjectCache::getObject(const llvm::Module*)’
                     virtual MemoryBuffer* getObject(const Module* M) = 0;
                                           ^
                  /usr/lib/llvm-3.5/include/llvm/ExecutionEngine/ObjectCache.h:30:16: warning: ‘virtual void llvm::ObjectCache::notifyObjectCompiled(const llvm::Module*, const llvm::MemoryBuffer*)’ was hidden [-Woverloaded-virtual]
                     virtual void notifyObjectCompiled(const Module *M, const MemoryBuffer *Obj) = 0;
                                  ^
                  executionengine.cpp:186:18: warning:   by ‘virtual void LLVMPYObjectCache::notifyObjectCompiled(const llvm::Module*, int)’ [-Woverloaded-virtual]
                       virtual void notifyObjectCompiled(const llvm::Module *M,
                                    ^
                  executionengine.cpp: In member function ‘virtual void LLVMPYObjectCache::notifyObjectCompiled(const llvm::Module*, int)’:
                  executionengine.cpp:191:42: error: request for member ‘getBufferStart’ in ‘MBR’, which is of non-class type ‘int’
                                                        MBR.getBufferStart(),
                                                            ^
                  executionengine.cpp:192:42: error: request for member ‘getBufferSize’ in ‘MBR’, which is of non-class type ‘int’
                                                        MBR.getBufferSize() };
                                                            ^
                  executionengine.cpp: In member function ‘virtual std::unique_ptr<llvm::MemoryBuffer> LLVMPYObjectCache::getObject(const llvm::Module*)’:
                  executionengine.cpp:211:21: error: no match for ‘operator=’ (operand types are ‘std::unique_ptr<llvm::MemoryBuffer>’ and ‘llvm::MemoryBuffer*’)
                                   res = llvm::MemoryBuffer::getMemBufferCopy(
                                       ^
                  executionengine.cpp:211:21: note: candidates are:
                  In file included from /usr/include/c++/4.9/memory:81:0,
                                   from /usr/lib/llvm-3.5/include/llvm/ADT/SmallVector.h:28,
                                   from /usr/lib/llvm-3.5/include/llvm/IR/DataLayout.h:24,
                                   from /usr/lib/llvm-3.5/include/llvm/IR/Module.h:20,
                                   from executionengine.cpp:5:
                  /usr/include/c++/4.9/bits/unique_ptr.h:249:7: note: std::unique_ptr<_Tp, _Dp>& std::unique_ptr<_Tp, _Dp>::operator=(std::unique_ptr<_Tp, _Dp>&&) [with _Tp = llvm::MemoryBuffer; _Dp = std::default_delete<llvm::MemoryBuffer>]
                         operator=(unique_ptr&& __u) noexcept
                         ^
                  /usr/include/c++/4.9/bits/unique_ptr.h:249:7: note:   no known conversion for argument 1 from ‘llvm::MemoryBuffer*’ to ‘std::unique_ptr<llvm::MemoryBuffer>&&’
                  /usr/include/c++/4.9/bits/unique_ptr.h:269:2: note: template<class _Up, class _Ep> typename std::enable_if<std::__and_<std::is_convertible<typename std::unique_ptr<_Up, _Ep>::pointer, typename std::unique_ptr<_Tp, _Dp>::_Pointer::type>, std::__not_<std::is_array<_Up> > >::value, std::unique_ptr<_Tp, _Dp>&>::type std::unique_ptr<_Tp, _Dp>::operator=(std::unique_ptr<_Up, _Ep>&&) [with _Up = _Up; _Ep = _Ep; _Tp = llvm::MemoryBuffer; _Dp = std::default_delete<llvm::MemoryBuffer>]
                    operator=(unique_ptr<_Up, _Ep>&& __u) noexcept
                    ^
                  /usr/include/c++/4.9/bits/unique_ptr.h:269:2: note:   template argument deduction/substitution failed:
                  executionengine.cpp:211:21: note:   mismatched types ‘std::unique_ptr<_Tp, _Dp>’ and ‘llvm::MemoryBuffer*’
                                   res = llvm::MemoryBuffer::getMemBufferCopy(
                                       ^
                  In file included from /usr/include/c++/4.9/memory:81:0,
                                   from /usr/lib/llvm-3.5/include/llvm/ADT/SmallVector.h:28,
                                   from /usr/lib/llvm-3.5/include/llvm/IR/DataLayout.h:24,
                                   from /usr/lib/llvm-3.5/include/llvm/IR/Module.h:20,
                                   from executionengine.cpp:5:
                  /usr/include/c++/4.9/bits/unique_ptr.h:278:7: note: std::unique_ptr<_Tp, _Dp>& std::unique_ptr<_Tp, _Dp>::operator=(std::nullptr_t) [with _Tp = llvm::MemoryBuffer; _Dp = std::default_delete<llvm::MemoryBuffer>; std::nullptr_t = std::nullptr_t]
                         operator=(nullptr_t) noexcept
                         ^
                  /usr/include/c++/4.9/bits/unique_ptr.h:278:7: note:   no known conversion for argument 1 from ‘llvm::MemoryBuffer*’ to ‘std::nullptr_t’
                  executionengine.cpp: In function ‘LLVMPYObjectCache* LLVMPY_CreateObjectCache(ObjectCacheNotifyFunc, ObjectCacheGetObjectFunc, void*)’:
                  executionengine.cpp:233:72: error: invalid new-expression of abstract class type ‘LLVMPYObjectCache’
                       return new LLVMPYObjectCache(notify_func, getobject_func, user_data);
                                                                                          ^
                  executionengine.cpp:176:7: note:   because the following virtual functions are pure within ‘LLVMPYObjectCache’:
                   class LLVMPYObjectCache : public llvm::ObjectCache {
                         ^
                  In file included from executionengine.cpp:8:0:
                  /usr/lib/llvm-3.5/include/llvm/ExecutionEngine/ObjectCache.h:30:16: note:   virtual void llvm::ObjectCache::notifyObjectCompiled(const llvm::Module*, const llvm::MemoryBuffer*)
                     virtual void notifyObjectCompiled(const Module *M, const MemoryBuffer *Obj) = 0;
                                  ^
                  linker.cpp: In function ‘int LLVMPY_LinkModules(LLVMModuleRef, LLVMModuleRef, int, const char**)’:
                  linker.cpp:19:32: error: ‘DiagnosticInfo’ does not name a type
                       auto diagnose = [&] (const DiagnosticInfo &DI) {
                                                  ^
                  linker.cpp:30:6: error: expected ‘)’ before ‘;’ token
                       };
                        ^
                  linker.cpp: In lambda function:
                  linker.cpp:30:6: error: expected ‘{’ before ‘;’ token
                  linker.cpp: In function ‘int LLVMPY_LinkModules(LLVMModuleRef, LLVMModuleRef, int, const char**)’:
                  linker.cpp:32:34: error: ‘LLVMCloneModule’ was not declared in this scope
                           Src = LLVMCloneModule(Src);
                                                    ^
                  linker.cpp:33:74: error: no matching function for call to ‘llvm::Linker::LinkModules(llvm::Module*, llvm::Module*, LLVMPY_LinkModules(LLVMModuleRef, LLVMModuleRef, int, const char**)::<lambda(int)>&)’
                       bool failed = Linker::LinkModules(unwrap(Dest), unwrap(Src), diagnose);
                                                                                            ^
                  linker.cpp:33:74: note: candidate is:
                  In file included from linker.cpp:4:0:
                  /usr/lib/llvm-3.5/include/llvm/Linker/Linker.h:51:17: note: static bool llvm::Linker::LinkModules(llvm::Module*, llvm::Module*, unsigned int, std::string*)
                       static bool LinkModules(Module *Dest, Module *Src, unsigned Mode,
                                   ^
                  /usr/lib/llvm-3.5/include/llvm/Linker/Linker.h:51:17: note:   candidate expects 4 arguments, 3 provided
                  Makefile.linux:17: recipe for target 'libllvmlite.so' failed
                  make: *** [libllvmlite.so] Error 1
                  Traceback (most recent call last):
                    File "ffi/build.py", line 114, in <module>
                      main()
                    File "ffi/build.py", line 104, in main
                      main_posix('linux', '.so')
                    File "ffi/build.py", line 96, in main_posix
                      subprocess.check_call(['make', '-f', makefile])
                    File "/usr/lib/python2.7/subprocess.py", line 540, in check_call
                      raise CalledProcessError(retcode, cmd)
                  subprocess.CalledProcessError: Command '['make', '-f', 'Makefile.linux']' returned non-zero exit status 2
                  error: command '/usr/bin/python' failed with exit status 1
                  

                  谁能帮我弄清楚我错过了什么?

                  Can anybody help me figure out what i have missed?

                  [更新]

                  我通过使用 llvm 3.6 来修复它,方法是安装包 'llmv-3.6-dev' 并将 'ffi/Makefile.linux' 中的 'LLVM_CONFIG' 变量更改为 'llvm-config-3.6'.

                  I fixed it by using llvm 3.6 by installing the package llmv-3.6-dev and changing the LLVM_CONFIG variable in ffi/Makefile.linux to llvm-config-3.6.

                  但现在我收到以下错误:

                  But now i get the following error:

                  running build
                  got version from VCS {'version': '0.9.0.dev+7.gf5a7007.dirty', 'full': 'f5a70072ce0e7f5e432d6645056a60b00f957c66.dirty'}
                  running build_ext
                  /usr/bin/python ffi/build.py
                  LLVM version... 3.6.2
                  # static-libstdc++ avoids runtime dependencies on a
                  # particular libstdc++ version.
                  g++ -static-libstdc++ -shared -flto `llvm-config-3.6 --cxxflags` -fno-rtti -g assembly.cpp bitcode.cpp core.cpp initfini.cpp module.cpp value.cpp executionengine.cpp transforms.cpp passmanagers.cpp targets.cpp dylib.cpp linker.cpp -o libllvmlite.so -flto `llvm-config-3.6 --ldflags` -Wl,--exclude-libs=ALL `llvm-config-3.6 --system-libs --libs all`
                  /usr/bin/ld: cannot find -lz
                  collect2: error: ld returned 1 exit status
                  Makefile.linux:17: recipe for target 'libllvmlite.so' failed
                  make: *** [libllvmlite.so] Error 1
                  Traceback (most recent call last):
                    File "ffi/build.py", line 114, in <module>
                      main()
                    File "ffi/build.py", line 104, in main
                      main_posix('linux', '.so')
                    File "ffi/build.py", line 96, in main_posix
                      subprocess.check_call(['make', '-f', makefile])
                    File "/usr/lib/python2.7/subprocess.py", line 540, in check_call
                      raise CalledProcessError(retcode, cmd)
                  subprocess.CalledProcessError: Command '['make', '-f', 'Makefile.linux']' returned non-zero exit status 2
                  error: command '/usr/bin/python' failed with exit status 1 
                  

                  我不确定该错误是什么意思,而且我的 google foo 不够强大,无法找到任何解决方案.有什么帮助吗?

                  I'm unsure what the error means and my google foo is not strong enough to find any kind of a solution. Any help?

                  推荐答案

                  要获得 llvm 3.6,您可以添加一个 /etc/apt/sources.list.d/llvm.list 文件:

                  To get llvm 3.6 you can add a /etc/apt/sources.list.d/llvm.list file with::

                  # cat /etc/apt/sources.list.d/llvm.list
                     deb http://llvm.org/apt/jessie/ llvm-toolchain-jessie main
                     deb-src http://llvm.org/apt/jessie/ llvm-toolchain-jessie main
                     # 3.6
                     deb http://llvm.org/apt/jessie/ llvm-toolchain-jessie-3.6 main
                     deb-src http://llvm.org/apt/jessie/ llvm-toolchain-jessie-3.6 main
                  

                  您也需要添加密钥::

                  # gpg --keyserver pgpkeys.mit.edu --recv-key 15CF4D18AF4F7421
                  # gpg -a --export 15CF4D18AF4F7421 | apt-key add -
                  

                  apt-get 更新和安装 llvm-3.6::

                  apt-get update and install llvm-3.6::

                  apt-get update
                  apt-get install cython python-llvm build-essential libedit-dev
                  apt-get install llvm-3.6 llvm-3.6-dev llvm-dev
                  

                  然后在你的 virtualenv::

                  Then on your virtualenv::

                  pip install enum34
                  LLVM_CONFIG=/usr/lib/llvm-3.6/bin/llvm-config pip install llvmlite
                  LLVM_CONFIG=/usr/lib/llvm-3.6/bin/llvm-config pip install numba
                  

                  这篇关于Debian 8 上的 Python numba/llvmlite - 我无法构建 llvmlite的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:从 Python 运行 Scrapy 下一篇:pyodbc 通过 IIS7 连接到 MSSQL 2005 服务器

                  相关文章

                    <bdo id='G0aGo'></bdo><ul id='G0aGo'></ul>

                1. <tfoot id='G0aGo'></tfoot>

                    <i id='G0aGo'><tr id='G0aGo'><dt id='G0aGo'><q id='G0aGo'><span id='G0aGo'><b id='G0aGo'><form id='G0aGo'><ins id='G0aGo'></ins><ul id='G0aGo'></ul><sub id='G0aGo'></sub></form><legend id='G0aGo'></legend><bdo id='G0aGo'><pre id='G0aGo'><center id='G0aGo'></center></pre></bdo></b><th id='G0aGo'></th></span></q></dt></tr></i><div id='G0aGo'><tfoot id='G0aGo'></tfoot><dl id='G0aGo'><fieldset id='G0aGo'></fieldset></dl></div>

                    <small id='G0aGo'></small><noframes id='G0aGo'>

                    <legend id='G0aGo'><style id='G0aGo'><dir id='G0aGo'><q id='G0aGo'></q></dir></style></legend>