Я пытаюсь построить пример, вдохновленный здесь
Моим первоначальным намерением является возможность вызова кода C ++ из Python. Я просто запускаю примеры из документации Boost для достижения этой цели.
Вот мой make-файл
CXX := g++
CXX_FLAGS := -Wall -Wextra -std=c++17 -ggdb
BIN := bin
SRC := src
INCLUDE := inc
LIB := lib
BOOST_ROOT := /home/eicossa/repo/boost_install
BOOST_INCL := ${BOOST_ROOT}/include/
BOOST_LIBS := ${BOOST_ROOT}/libs/
PYTHON_INCL := /usr/include/python3.7m/
PYTHON_LIBS := /usr/lib/python3.7/
LIBFLAGS := -lboost_system
EXECUTABLE := greet
all: $(BIN)/$(EXECUTABLE)
run: clean all
clear
./$(BIN)/$(EXECUTABLE)
$(BIN)/$(EXECUTABLE): $(SRC)/*.cpp
$(CXX) $(CXX_FLAGS) -I$(PYTHON_INCL) -I$(INCLUDE) -I$(BOOST_INCL) -L$(BOOST_LIBS) -L$(PYTHON_LIBS) -L$(LIB$
clean:
-rm $(BIN)/*
Это приводит к следующим ошибкам
/ tmp / ccNVjFX3.o: в функции boost::python::api::object::object()':
/home/eicossa/repo/boost_install/include/boost/python/object_core.hpp:400:
undefined reference to
_Py_NoneStruct '/ tmp /ccQNpbxG.o: в функции PyInit_hello_ext':
/home/eicossa/Dropbox/wtcd/license/boost/src/bindings.cpp:3: undefined
reference to
boost :: python :: detail :: init_module (PyModuleDef &, void () ()) '/tmp/ccQNpbxG.o: в функции boost::python::type_info::name()
const':
/home/eicossa/repo/boost_install/include/boost/python/type_id.hpp:160:
undefined reference to
boost :: python ::detail :: gcc_demangle (char const ) '/tmp/ccQNpbxG.o: в функции boost::python::to_python_value<char const* const&>::operator()(char
const* const&) const':
/home/eicossa/repo/boost_install/include/boost/python/converter/builtin_converters.hpp:157:
undefined reference to
boost :: python :: converter :: do_return_to_python (char const *)' /tmp/ccQNpbxG.o: в функции boost::python::to_python_value<char
const* const&>::get_pytype() const':
/home/eicossa/repo/boost_install/include/boost/python/converter/builtin_converters.hpp:157:
undefined reference to
PyUnicode_Type '/tmp/ccQNpbxG.o: в функции void boost::python::def<char const* (*)()>(char const*, char const*
(*)())':
/home/eicossa/repo/boost_install/include/boost/python/def.hpp:91:
undefined reference to
boost :: python :: detail :: scope_setattr_doc (char const *, boost :: python :: api :: object const &, char const *)' / tmp/ccQNpbxG.o: В функции `boost :: python :: api :: boost объекта :: python :: detail :: make_function_aux
(char const * (*) (), boost ::python :: default_call_policies const &, boost :: mpl :: vector1 const &) ': /home/eicossa/repo/boost_install/include/boost/python/make_function.hpp:38: неопределенная ссылка на boost::python::objects::function_object(boost::python::objects::py_function
const&)' /tmp/ccQNpbxG.o: In function
boost :: python ::объекты :: py_function_impl_base :: py_function_impl_base () ': /home/eicossa/repo/boost_install/include/boost/python/object/py_function.hpp:20: неопределенная ссылка на vtable for
boost::python::objects::py_function_impl_base'
/tmp/ccQNpbxG.o:(.rodata._ZTVN5boost6python7objects23caller_py_function_implINS0_6detail6callerIPFPKcvENS0_21default_call_policiesENS_3mpl7vector1IS6_EEEEEE[_ZTVN5boost6python7objects23caller_py_function_implINS0_6detail6callerIPFPKcvENS0_21default_call_policiesENS_3mpl7vector1IS6_EEEEEE]+0x30):
undefined reference to
boost :: python :: objects :: py_function_impl_base :: max_arity () const'/tmp/ccQNpbxG.o: В функции boost::python::objects::caller_py_function_impl<boost::python::detail::caller<char
const* (*)(), boost::python::default_call_policies,
boost::mpl::vector1<char const*> > >::~caller_py_function_impl()':
/home/eicossa/repo/boost_install/include/boost/python/object/py_function.hpp:30:
undefined reference to
повышение :: питона :: объекты :: py_function_impl_base :: ~ py_function_impl_base ()' /tmp/ccQNpbxG.o:(.rodata._ZTIN5boost6python7objects23caller_py_function_implINS0_6detail6callerIPFPKcvENS0_21default_call_policiesENS_3mpl7vector1IS6_EEEEEE[_ZTIN5boost6python7objects23caller_py_function_implINS0_6detail6callerIPFPKcvENS0_21default_call_policiesENS_3mpl7vector1IS6_EEEEEE]+0x10) не определеноссылка на typeinfo for
boost::python::objects::py_function_impl_base' /tmp/ccQNpbxG.o: In
function
boost :: python :: converter :: Ожидаемый_pytype_for_arg :: get_pytype () ': /home/eicossa/repo/boost_install/include/boost/python/converter/pytype_function.hpp:69: неопределенная ссылка на boost::python::converter::registry::query(boost::python::type_info)'
/home/eicossa/repo/boost_install/include/boost/python/converter/pytype_function.hpp:70:
undefined reference to
boost :: python :: converter :: registration :: Ожидаемый_from_python_type () const 'collect2: error: ld вернул 1 состояние выхода Makefile: 27: рецепт для цели' bin / greet 'не выполнен make: *** [bin / greet] Ошибка 1
Что я делаю не так?