Я пытаюсь скомпилировать базовый пример, скопированный и вставленный непосредственно из pybind11
, с g++-8
на Mac.
Это код 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 / folder / zk / zxm107qd503bgh5qxvdhv6cr0000gv / T // ccbv0Hje.s: 75886: 19: ошибка: недопустимый вариант 'PLTOFF' movabsq $ __ ZdlPv @ PLTO,% rax
Я погуглил эту ошибку, но не смог найти полезную ветку.Кроме того, я хочу использовать g++
(не Xcode), так как он легкий и популярный в моем сообществе.Я пробовал разные версии g++
(6, 7 и 8), но вижу ту же ошибку.
Мне нужно использовать mcmodel=large
, потому что для реального кода, с которым я имею дело, могут потребоваться большие объемы памяти.
Буду признателен за любую помощь.