Cibuildwheel 无法使用静态库进行编译
Cibuildwheel Fails to Compile With Static Libraries
我有一个 Python C 扩展模块,它依赖于静态库。下面是我的文件树,我没有包含所有文件,因为我试图简化问题。
folder/
├── src/
| ├── main.c
| └── other.c
├── include/
| ├── glfw3native.h
| └── glfw3.h
├── lib/
| └── libglfw3.a
└── setup.py
下面是我的 setup.py
文件,我删除了一些不需要的行。
import setuptools
setuptools.setup(
ext_modules = [
setuptools.Extension(
"Module.__init__", ["src/main.c", "src/other.c"],
include_dirs = ["include"],
library_dirs = ["lib"],
libraries = ["glfw"])
])
我可以使用以下命令成功编译我的项目。
python setup.py bdist_wheel
现在我想使用cibuildtools
为多个平台编译我的项目。
cibuildwheel --platform linux
由于某种原因,程序在尝试 link 库时崩溃。即使指定了库路径,它也会显示以下错误。
cannot find -lglfw
为什么用cibuildwheel
编译时会出现这种情况?
因为静态二进制文件在每个系统上都不同,所以我需要在相应的平台上编译我的库。最后,我使用 CIBW_BEFORE_ALL
变量为我的库执行构建命令。
我有一个 Python C 扩展模块,它依赖于静态库。下面是我的文件树,我没有包含所有文件,因为我试图简化问题。
folder/
├── src/
| ├── main.c
| └── other.c
├── include/
| ├── glfw3native.h
| └── glfw3.h
├── lib/
| └── libglfw3.a
└── setup.py
下面是我的 setup.py
文件,我删除了一些不需要的行。
import setuptools
setuptools.setup(
ext_modules = [
setuptools.Extension(
"Module.__init__", ["src/main.c", "src/other.c"],
include_dirs = ["include"],
library_dirs = ["lib"],
libraries = ["glfw"])
])
我可以使用以下命令成功编译我的项目。
python setup.py bdist_wheel
现在我想使用cibuildtools
为多个平台编译我的项目。
cibuildwheel --platform linux
由于某种原因,程序在尝试 link 库时崩溃。即使指定了库路径,它也会显示以下错误。
cannot find -lglfw
为什么用cibuildwheel
编译时会出现这种情况?
因为静态二进制文件在每个系统上都不同,所以我需要在相应的平台上编译我的库。最后,我使用 CIBW_BEFORE_ALL
变量为我的库执行构建命令。