使用 Cython 编译时找不到库文件

Posted

技术标签:

【中文标题】使用 Cython 编译时找不到库文件【英文标题】:Cannot find library file when compiling with Cython 【发布时间】:2017-11-01 12:01:42 【问题描述】:

我正在构建/编译一个 Cython 项目:

setup.caller.py

from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
from Cython.Build import cythonize

setup(
    name = 'test app',
    cmdclass = 'build_ext': build_ext,
    ext_modules = cythonize([
        Extension(
            'caller',
            ['caller.pyx', 'foo.cpp'],
            language='c++',
            extra_compile_args=['-std=c++11'],
            library_dirs=['/usr/lib/bar'],
            libraries=['libbar'],
            include_dirs=['/usr/include/baz']
        )
    ])
)

但是当我构建/编译时出现错误:

$ python setup.caller.py build_ext --inplace
...
/usr/bin/ld: cannot find -llibbar
collect2: error: ld returned 1 exit status
error: command 'x86_64-linux-gnu-g++' failed with exit status 1

我检查了,“libbar.so”在“/usr/lib/bar”中。我正在 Linux Mint 上编译。

【问题讨论】:

【参考方案1】:

我认为应该只是bar 而不是libbar,链接器知道添加lib 前缀和所需的任何后缀(.a.so)。

【讨论】:

以上是关于使用 Cython 编译时找不到库文件的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 上使用 MinGW 编译 C++ 时找不到 omp.h

delphi2010 VCLskin5.6 编译时找不到文件

javac编译时找不到文件的问题和运行项目找不到指定类问题

gcc编译文件时找不到指定函数怎么办

学习OpenGL时找不到glClear

与mingw交叉编译时找不到zlib头文件?