c++ - (cmake, swig) 链接器错误 (ld: symbol(s) not found for architecture x86_64)
问题描述
平台:macOS11.1
大家好。
当我尝试安装 HYMLS(https://github.com/nlesc-smcm/hymls)时,遇到了以下错误。
[ 98%] Building CXX object python/CMakeFiles/HYMLS.dir/CMakeFiles/HYMLS.dir/HYMLSPYTHON_wrap.cxx.o
[100%] Linking CXX shared module _HYMLS.so
Undefined symbols for architecture x86_64:
"_PyArg_UnpackTuple", referenced from:
SwigPyObject_own(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
"_PyBool_FromLong", referenced from:
SWIG_From_bool(bool) in HYMLSPYTHON_wrap.cxx.o
SwigPyObject_richcompare(SwigPyObject*, SwigPyObject*, int) in HYMLSPYTHON_wrap.cxx.o
SwigPyObject_own(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
"_PyBool_Type", referenced from:
SWIG_AsVal_bool(_object*, bool*) in HYMLSPYTHON_wrap.cxx.o
"_PyBytes_AsStringAndSize", referenced from:
SWIG_AsCharPtrAndSize(_object*, char**, unsigned long*, int*) in HYMLSPYTHON_wrap.cxx.o
"_PyCFunction_Type", referenced from:
SWIG_PyInstanceMethod_New(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
"_PyCMethod_New", referenced from:
SWIG_PyInstanceMethod_New(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
"_PyCapsule_GetPointer", referenced from:
SWIG_Python_TypeQuery(char const*) in HYMLSPYTHON_wrap.cxx.o
SWIG_Python_DestroyModule(_object*) in HYMLSPYTHON_wrap.cxx.o
"_PyCapsule_Import", referenced from:
SWIG_Python_GetModule(void*) in HYMLSPYTHON_wrap.cxx.o
"_PyCapsule_New", referenced from:
SWIG_Python_TypeQuery(char const*) in HYMLSPYTHON_wrap.cxx.o
SWIG_Python_SetModule(swig_module_info*) in HYMLSPYTHON_wrap.cxx.o
"_PyDict_GetItem", referenced from:
SWIG_Python_TypeQuery(char const*) in HYMLSPYTHON_wrap.cxx.o
"_PyDict_New", referenced from:
SWIG_Python_TypeCache() in HYMLSPYTHON_wrap.cxx.o
SWIG_Python_NewShadowInstance(SwigPyClientData*, _object*) in HYMLSPYTHON_wrap.cxx.o
"_PyDict_SetItem", referenced from:
SWIG_Python_TypeQuery(char const*) in HYMLSPYTHON_wrap.cxx.o
"_PyDict_SetItemString", referenced from:
SWIG_Python_InstallConstants(_object*, swig_const_info*) in HYMLSPYTHON_wrap.cxx.o
"_PyErr_Clear", referenced from:
SWIG_Python_GetModule(void*) in HYMLSPYTHON_wrap.cxx.o
SWIG_Python_ConvertPtrAndOwn(_object*, void**, swig_type_info*, int, int*) in HYMLSPYTHON_wrap.cxx.o
SWIG_Python_GetSwigThis(_object*) in HYMLSPYTHON_wrap.cxx.o
SWIG_AsVal_long(_object*, long*) in HYMLSPYTHON_wrap.cxx.o
SWIG_AsVal_long_SS_long(_object*, long long*) in HYMLSPYTHON_wrap.cxx.o
SwigPyClientData_New(_object*) in HYMLSPYTHON_wrap.cxx.o
SWIG_AsVal_double(_object*, double*) in HYMLSPYTHON_wrap.cxx.o
...
"_PyErr_Fetch", referenced from:
SWIG_Python_RaiseOrModifyTypeError(char const*) in HYMLSPYTHON_wrap.cxx.o
SwigPyObject_dealloc(_object*) in HYMLSPYTHON_wrap.cxx.o
"_PyErr_Format", referenced from:
SWIG_Python_UnpackTuple(_object*, char const*, long, long, _object**) in HYMLSPYTHON_wrap.cxx.o
"_PyErr_GivenExceptionMatches", referenced from:
SWIG_Python_TypeErrorOccurred(_object*) in HYMLSPYTHON_wrap.cxx.o
"_PyErr_Occurred", referenced from:
_wrap_Tools_Revision(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
_wrap_Tools_RestoreIO(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
_wrap_Tools_InitializedIO(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
_wrap_Tools_Error(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
_wrap_Tools_Warning(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
_wrap_Tools_SignalHandler(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
_wrap_Tools_StartTiming(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
...
"_PyErr_Restore", referenced from:
SWIG_Python_RaiseOrModifyTypeError(char const*) in HYMLSPYTHON_wrap.cxx.o
SwigPyObject_dealloc(_object*) in HYMLSPYTHON_wrap.cxx.o
"_PyErr_SetString", referenced from:
_wrap_Tools_Revision(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
_wrap_Tools_RestoreIO(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
_wrap_Tools_InitializedIO(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
_wrap_Tools_Error(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
_wrap_Tools_Warning(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
_wrap_Tools_SignalHandler(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
_wrap_Tools_StartTiming(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
...
"_PyErr_WriteUnraisable", referenced from:
SwigPyObject_dealloc(_object*) in HYMLSPYTHON_wrap.cxx.o
"_PyExc_AttributeError", referenced from:
SWIG_Python_ErrorType(int) in HYMLSPYTHON_wrap.cxx.o
"_PyExc_Exception", referenced from:
_wrap_Tools_Revision(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
_wrap_Tools_RestoreIO(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
_wrap_Tools_InitializedIO(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
_wrap_Tools_Error(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
_wrap_Tools_Warning(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
_wrap_Tools_SignalHandler(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
_wrap_Tools_StartTiming(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
...
"_PyExc_IOError", referenced from:
SWIG_Python_ErrorType(int) in HYMLSPYTHON_wrap.cxx.o
"_PyExc_IndexError", referenced from:
SWIG_Python_ErrorType(int) in HYMLSPYTHON_wrap.cxx.o
"_PyExc_MemoryError", referenced from:
SWIG_Python_ErrorType(int) in HYMLSPYTHON_wrap.cxx.o
"_PyExc_OverflowError", referenced from:
SWIG_Python_ErrorType(int) in HYMLSPYTHON_wrap.cxx.o
"_PyExc_RuntimeError", referenced from:
SWIG_Python_ErrorType(int) in HYMLSPYTHON_wrap.cxx.o
"_PyExc_SyntaxError", referenced from:
SWIG_Python_ErrorType(int) in HYMLSPYTHON_wrap.cxx.o
"_PyExc_SystemError", referenced from:
SWIG_Python_UnpackTuple(_object*, char const*, long, long, _object**) in HYMLSPYTHON_wrap.cxx.o
SWIG_Python_ErrorType(int) in HYMLSPYTHON_wrap.cxx.o
"_PyExc_TypeError", referenced from:
SWIG_Python_UnpackTuple(_object*, char const*, long, long, _object**) in HYMLSPYTHON_wrap.cxx.o
SWIG_Python_RaiseOrModifyTypeError(char const*) in HYMLSPYTHON_wrap.cxx.o
SWIG_Python_ErrorType(int) in HYMLSPYTHON_wrap.cxx.o
SWIG_Python_TypeErrorOccurred(_object*) in HYMLSPYTHON_wrap.cxx.o
SwigPyObject_append(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
"_PyExc_ValueError", referenced from:
SWIG_Python_ErrorType(int) in HYMLSPYTHON_wrap.cxx.o
"_PyExc_ZeroDivisionError", referenced from:
SWIG_Python_ErrorType(int) in HYMLSPYTHON_wrap.cxx.o
"_PyFloat_AsDouble", referenced from:
SWIG_AsVal_double(_object*, double*) in HYMLSPYTHON_wrap.cxx.o
"_PyFloat_FromDouble", referenced from:
_wrap_Preconditioner_InitializeTime(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
_wrap_Preconditioner_ComputeTime(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
_wrap_Preconditioner_ApplyInverseTime(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
_wrap_Preconditioner_InitializeFlops(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
_wrap_Preconditioner_ComputeFlops(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
_wrap_Preconditioner_ApplyInverseFlops(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
_wrap_Preconditioner_NormInf(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
...
"_PyFloat_Type", referenced from:
SWIG_AsVal_double(_object*, double*) in HYMLSPYTHON_wrap.cxx.o
"_PyImport_AddModule", referenced from:
SWIG_Python_SetModule(swig_module_info*) in HYMLSPYTHON_wrap.cxx.o
"_PyInstanceMethod_New", referenced from:
SWIG_PyInstanceMethod_New(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
"_PyLong_AsDouble", referenced from:
SWIG_AsVal_double(_object*, double*) in HYMLSPYTHON_wrap.cxx.o
"_PyLong_AsLong", referenced from:
SWIG_AsVal_long(_object*, long*) in HYMLSPYTHON_wrap.cxx.o
"_PyLong_AsLongLong", referenced from:
SWIG_AsVal_long_SS_long(_object*, long long*) in HYMLSPYTHON_wrap.cxx.o
"_PyLong_FromLong", referenced from:
SWIG_From_int(int) in HYMLSPYTHON_wrap.cxx.o
"_PyLong_FromVoidPtr", referenced from:
SwigPyObject_long(SwigPyObject*) in HYMLSPYTHON_wrap.cxx.o
"_PyModule_AddObject", referenced from:
SWIG_Python_SetModule(swig_module_info*) in HYMLSPYTHON_wrap.cxx.o
"_PyModule_Create2", referenced from:
_PyInit__HYMLS in HYMLSPYTHON_wrap.cxx.o
"_PyModule_GetDict", referenced from:
_PyInit__HYMLS in HYMLSPYTHON_wrap.cxx.o
"_PyObject_Call", referenced from:
SWIG_Python_NewShadowInstance(SwigPyClientData*, _object*) in HYMLSPYTHON_wrap.cxx.o
"_PyObject_CallFunctionObjArgs", referenced from:
SWIG_Python_ConvertPtrAndOwn(_object*, void**, swig_type_info*, int, int*) in HYMLSPYTHON_wrap.cxx.o
SwigPyObject_dealloc(_object*) in HYMLSPYTHON_wrap.cxx.o
"_PyObject_Free", referenced from:
SwigPyPacked_dealloc(_object*) in HYMLSPYTHON_wrap.cxx.o
SwigPyObject_dealloc(_object*) in HYMLSPYTHON_wrap.cxx.o
SwigPyPacked_New(void*, unsigned long, swig_type_info*) in HYMLSPYTHON_wrap.cxx.o
"_PyObject_GenericGetAttr", referenced from:
l___const._ZL21SwigPyPacked_TypeOncev.tmp in HYMLSPYTHON_wrap.cxx.o
l___const._ZL21SwigPyObject_TypeOncev.tmp in HYMLSPYTHON_wrap.cxx.o
"_PyObject_GetAttr", referenced from:
SWIG_Python_GetSwigThis(_object*) in HYMLSPYTHON_wrap.cxx.o
"_PyObject_GetAttrString", referenced from:
SwigPyClientData_New(_object*) in HYMLSPYTHON_wrap.cxx.o
"_PyObject_IsInstance", referenced from:
SwigPyClientData_New(_object*) in HYMLSPYTHON_wrap.cxx.o
"_PyObject_IsTrue", referenced from:
SWIG_AsVal_bool(_object*, bool*) in HYMLSPYTHON_wrap.cxx.o
SwigPyObject_own(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
"_PyObject_SetAttr", referenced from:
SWIG_Python_NewShadowInstance(SwigPyClientData*, _object*) in HYMLSPYTHON_wrap.cxx.o
SWIG_Python_SetSwigThis(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
"_PyTuple_New", referenced from:
SWIG_Python_NewShadowInstance(SwigPyClientData*, _object*) in HYMLSPYTHON_wrap.cxx.o
SwigPyClientData_New(_object*) in HYMLSPYTHON_wrap.cxx.o
"_PyTuple_SetItem", referenced from:
SwigPyClientData_New(_object*) in HYMLSPYTHON_wrap.cxx.o
"_PyType_IsSubtype", referenced from:
SWIG_PyInstanceMethod_New(_object*, _object*) in HYMLSPYTHON_wrap.cxx.o
SWIG_AsVal_double(_object*, double*) in HYMLSPYTHON_wrap.cxx.o
"_PyType_Ready", referenced from:
SwigPyPacked_TypeOnce() in HYMLSPYTHON_wrap.cxx.o
SwigPyObject_TypeOnce() in HYMLSPYTHON_wrap.cxx.o
"_PyType_Type", referenced from:
SwigPyClientData_New(_object*) in HYMLSPYTHON_wrap.cxx.o
"_PyUnicode_AsUTF8String", referenced from:
SWIG_AsCharPtrAndSize(_object*, char**, unsigned long*, int*) in HYMLSPYTHON_wrap.cxx.o
"_PyUnicode_Concat", referenced from:
SwigPyObject_repr(SwigPyObject*) in HYMLSPYTHON_wrap.cxx.o
"_PyUnicode_DecodeUTF8", referenced from:
SWIG_FromCharPtrAndSize(char const*, unsigned long) in HYMLSPYTHON_wrap.cxx.o
"_PyUnicode_FromFormat", referenced from:
SWIG_Python_RaiseOrModifyTypeError(char const*) in HYMLSPYTHON_wrap.cxx.o
SwigPyPacked_repr(SwigPyPacked*) in HYMLSPYTHON_wrap.cxx.o
SwigPyPacked_str(SwigPyPacked*) in HYMLSPYTHON_wrap.cxx.o
SwigPyObject_repr(SwigPyObject*) in HYMLSPYTHON_wrap.cxx.o
"_PyUnicode_FromString", referenced from:
SWIG_Python_str_FromChar(char const*) in HYMLSPYTHON_wrap.cxx.o
"_Py_DecRef", referenced from:
SwigPyObject_repr(SwigPyObject*) in HYMLSPYTHON_wrap.cxx.o
"__PyObject_New", referenced from:
SWIG_Python_NewPointerObj(_object*, void*, swig_type_info*, int) in HYMLSPYTHON_wrap.cxx.o
SwigPyObject_New(void*, swig_type_info*, int) in HYMLSPYTHON_wrap.cxx.o
SwigPyPacked_New(void*, unsigned long, swig_type_info*) in HYMLSPYTHON_wrap.cxx.o
"__Py_Dealloc", referenced from:
_Py_DECREF(_object*) in HYMLSPYTHON_wrap.cxx.o
"__Py_NoneStruct", referenced from:
SWIG_Py_Void() in HYMLSPYTHON_wrap.cxx.o
SWIG_Python_ConvertPtrAndOwn(_object*, void**, swig_type_info*, int, int*) in HYMLSPYTHON_wrap.cxx.o
"__Py_NotImplementedStruct", referenced from:
SwigPyObject_richcompare(SwigPyObject*, SwigPyObject*, int) in HYMLSPYTHON_wrap.cxx.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [python/_HYMLS.so] Error 1
make[1]: *** [python/CMakeFiles/HYMLS.dir/all] Error 2
make: *** [all] Error 2
我猜这是因为这些东西(比如_PyArg_UnpackTuple)还没有被编译。我用这个猜想解决了一个类似的问题,但我不知道如何解决这个问题。
我已经在我的电脑上安装了 SWIG。
/usr/local/Cellar/swig/4.0.2/bin/swig
/usr/local/Cellar/swig/4.0.2/share/swig
谁能帮我解决这个问题?
解决方案
推荐阅读
- asp.net-core - 如何在 Asp.NET Core 3.1 中进行日期驱动的操作?
- excel - 通过设置条件VBA添加项目
- javascript - 如何将数据从 javascript 传递到节点并用其他数据响应?
- laravel - Laravel 上传 .heic 图片
- java - 为什么 Object 类型的变量可以保存对 Java 中数组的引用?
- javascript - ::before 和 ::after 元素在 IE11 中不起作用
- sql - Azure 数据工厂数据流 json 到 SQL
- ios - WKWebView 检测登录页面更改或重定向
- python - TypeError:预期的 str、字节或 os.PathLike 对象,而不是列表转换
- c# - 是否可以在 setter 中将属性作为 ref 参数传递?c#(避免“属性或索引器不能作为 out 或 ref 参数传递”。)