我正在尝试编译从pybind11
直接复制和粘贴的基本示例,在Mac上是g++-8
。
这是c ++代码(example.cpp
):
#include <pybind11/pybind11.h>
int add(int i, int j) {
return i + j;
}
PYBIND11_MODULE(example, m) {
m.doc() = "pybind11 example plugin"; // optional module docstring
m.def("add", &add, "A function which adds two numbers");
}
当我使用以下命令时,它会起作用:
/usr/local/bin/g++-8 -O3 -Wall -shared -std=c++11 -fPIC -Wl,-undefined,dynamic_lookup `python3 -m pybind11 --includes` example.cpp -o example`python3-config --extension-suffix`
但是,当我添加-mcmodel=large
时,如下所示
/usr/local/bin/g++-8 -Wall -shared -std=c++11 -mcmodel=large -fPIC -Wl,-undefined,dynamic_lookup `python3 -m pybind11 --includes` example.cpp -o example`python3-config --extension-suffix`
这会给我带来一系列错误,例如:
/var/folders/zk/zxm107qd503bgh5qxvdhv6cr0000gv/T//ccbv0Hje.s:75886:19: 错误:无效的变体“ PLTOFF” movabsq $ __ ZdlPv @ PLTOFF,%rax
我已经用Google搜索了此错误,但是找不到有用的主题。另外,我想使用g++
(不是Xcode),因为它很轻便并且在我的社区中很流行。我尝试使用g++
的不同版本(6、7和8),但是看到相同的错误。
我需要使用mcmodel=large
,因为我处理的实际代码可能需要大量的内存分配。
任何帮助将不胜感激。