首页 > 解决方案 > (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

谁能帮我解决这个问题?

标签: c++cmakeswig

解决方案


推荐阅读