I have sucessfully install the faiss of C++ version. But I failed to compile the python verison.
When I input "make py" command, I got the following error:
ld: symbol(s) not found for architecture x86_64
clang-6.0: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: * [_swigfaiss.so] Error 1
make: * [py] Error 2
I have tried
OS:
Running on :
$ make py
/Library/Developer/CommandLineTools/usr/bin/make -C python build
/usr/local/opt/llvm/bin/clang++ -std=c++11 -dynamiclib -fPIC -fopenmp -L/usr/local/opt/llvm/lib -L/usr/local/Cellar/llvm/6.0.0/lib -o _swigfaiss.so swigfaiss_wrap.o ../libfaiss.a -framework Accelerate
Undefined symbols for architecture x86_64:
"_PyArg_ParseTuple", referenced from:
_wrap_new_FloatVector(_object, _object) in swigfaiss_wrap.o
_wrap_FloatVector_push_back(_object, _object) in swigfaiss_wrap.o
_wrap_FloatVector_clear(_object, _object) in swigfaiss_wrap.o
_wrap_FloatVector_data(_object, _object) in swigfaiss_wrap.o
_wrap_FloatVector_size(_object, _object) in swigfaiss_wrap.o
_wrap_FloatVector_at(_object, _object) in swigfaiss_wrap.o
_wrap_FloatVector_resize(_object, _object) in swigfaiss_wrap.o
...
"_PyArg_UnpackTuple", referenced from:
SwigPyObject_own(_object, _object) in swigfaiss_wrap.o
"_PyBool_FromLong", referenced from:
SwigPyObject_richcompare(SwigPyObject, SwigPyObject, int) in swigfaiss_wrap.o
SwigPyObject_own(_object, _object) in swigfaiss_wrap.o
_wrap_Index_verbose_get(_object, _object) in swigfaiss_wrap.o
_wrap_Index_is_trained_get(_object, _object) in swigfaiss_wrap.o
_wrap_ClusteringParameters_verbose_get(_object, _object) in swigfaiss_wrap.o
_wrap_ClusteringParameters_spherical_get(_object, _object) in swigfaiss_wrap.o
_wrap_ClusteringParameters_update_index_get(_object, _object) in swigfaiss_wrap.o
...
"_PyBool_Type", referenced from:
_wrap_merge_result_table_with(_object, _object) in swigfaiss_wrap.o
_wrap_fvecs_maybe_subsample(_object, _object) in swigfaiss_wrap.o
_wrap_Index_verbose_set(_object, _object) in swigfaiss_wrap.o
_wrap_Index_is_trained_set(_object, _object) in swigfaiss_wrap.o
_wrap_ClusteringParameters_verbose_set(_object, _object) in swigfaiss_wrap.o
_wrap_ClusteringParameters_spherical_set(_object, _object) in swigfaiss_wrap.o
_wrap_ClusteringParameters_update_index_set(_object, _object) in swigfaiss_wrap.o
...
"_PyCObject_AsVoidPtr", referenced from:
_init_swigfaiss in swigfaiss_wrap.o
"_PyCObject_Type", referenced from:
_init_swigfaiss in swigfaiss_wrap.o
"_PyCapsule_GetPointer", referenced from:
SWIG_Python_DestroyModule(_object) in swigfaiss_wrap.o
"_PyCapsule_Import", referenced from:
_init_swigfaiss in swigfaiss_wrap.o
"_PyCapsule_New", referenced from:
_init_swigfaiss in swigfaiss_wrap.o
"_PyClass_Type", referenced from:
SwigPyClientData_New(_object) in swigfaiss_wrap.o
"_PyDict_GetItem", referenced from:
SWIG_Python_GetSwigThis(_object) in swigfaiss_wrap.o
"_PyDict_New", referenced from:
SWIG_Python_NewPointerObj(_object, void, swig_type_info, int) in swigfaiss_wrap.o
"_PyDict_SetItem", referenced from:
SWIG_Python_NewPointerObj(_object, void, swig_type_info, int) in swigfaiss_wrap.o
"_PyDict_SetItemString", referenced from:
_init_swigfaiss in swigfaiss_wrap.o
"_PyErr_Clear", referenced from:
_init_swigfaiss in swigfaiss_wrap.o
Swig_var_distance_compute_blas_threshold_set(_object) in swigfaiss_wrap.o
_wrap_FloatVector_push_back(_object, _object) in swigfaiss_wrap.o
_wrap_FloatVector_at(_object, _object) in swigfaiss_wrap.o
_wrap_FloatVector_resize(_object, _object) in swigfaiss_wrap.o
_wrap_DoubleVector_push_back(_object, _object) in swigfaiss_wrap.o
_wrap_DoubleVector_at(_object, _object) in swigfaiss_wrap.o
...
"_PyErr_Fetch", referenced from:
SwigPyObject_dealloc(_object) in swigfaiss_wrap.o
"_PyErr_Format", referenced from:
_init_swigfaiss in swigfaiss_wrap.o
swig_varlink_getattr(swig_varlinkobject, char) in swigfaiss_wrap.o
swig_varlink_setattr(swig_varlinkobject, char, _object) in swigfaiss_wrap.o
"_PyErr_Occurred", referenced from:
_init_swigfaiss in swigfaiss_wrap.o
Swig_var_distance_compute_blas_threshold_set(_object) in swigfaiss_wrap.o
_wrap_FloatVector_push_back(_object, _object) in swigfaiss_wrap.o
_wrap_FloatVector_at(_object, _object) in swigfaiss_wrap.o
_wrap_FloatVector_resize(_object, _object) in swigfaiss_wrap.o
_wrap_DoubleVector_push_back(_object, _object) in swigfaiss_wrap.o
_wrap_DoubleVector_at(_object, _object) in swigfaiss_wrap.o
...
"_PyErr_Print", referenced from:
_init_swigfaiss in swigfaiss_wrap.o
"_PyErr_Restore", referenced from:
SwigPyObject_dealloc(_object) in swigfaiss_wrap.o
"_PyErr_SetString", referenced from:
swig_ptr(_object) in swigfaiss_wrap.o
_init_swigfaiss in swigfaiss_wrap.o
Swig_var_distance_compute_blas_threshold_set(_object) in swigfaiss_wrap.o
Swig_var_indexPQ_stats_set(_object) in swigfaiss_wrap.o
Swig_var_indexIVF_stats_set(_object) in swigfaiss_wrap.o
Swig_var_hnsw_stats_set(_object) in swigfaiss_wrap.o
Swig_var_indexIVFPQ_stats_set(_object) in swigfaiss_wrap.o
...
"_PyErr_WriteUnraisable", referenced from:
SwigPyObject_dealloc(_object) in swigfaiss_wrap.o
"_PyEval_RestoreThread", referenced from:
_wrap_popcount64(_object, _object) in swigfaiss_wrap.o
_wrap_hammings(_object, _object) in swigfaiss_wrap.o
_wrap_bitvec_print(_object, _object) in swigfaiss_wrap.o
_wrap_fvecs2bitvecs(_object, _object) in swigfaiss_wrap.o
_wrap_fvec2bitvec(_object, _object) in swigfaiss_wrap.o
_wrap_hammings_knn(_object, _object) in swigfaiss_wrap.o
_wrap_hammings_knn_core(_object, _object) in swigfaiss_wrap.o
...
"_PyEval_SaveThread", referenced from:
_wrap_popcount64(_object, _object) in swigfaiss_wrap.o
_wrap_hammings(_object, _object) in swigfaiss_wrap.o
_wrap_bitvec_print(_object, _object) in swigfaiss_wrap.o
_wrap_fvecs2bitvecs(_object, _object) in swigfaiss_wrap.o
_wrap_fvec2bitvec(_object, _object) in swigfaiss_wrap.o
_wrap_hammings_knn(_object, _object) in swigfaiss_wrap.o
_wrap_hammings_knn_core(_object, _object) in swigfaiss_wrap.o
...
"_PyExc_AttributeError", referenced from:
_init_swigfaiss in swigfaiss_wrap.o
Swig_var_IO_FLAG_MMAP_set(_object) in swigfaiss_wrap.o
Swig_var_IO_FLAG_READ_ONLY_set(_object) in swigfaiss_wrap.o
swig_varlink_getattr(swig_varlinkobject, char) in swigfaiss_wrap.o
swig_varlink_setattr(swig_varlinkobject, char, _object) in swigfaiss_wrap.o
l_switch.table._ZL25_wrap_delete_MapLong2LongP7_objectS0_ in swigfaiss_wrap.o
"_PyExc_IOError", referenced from:
l_switch.table._ZL25_wrap_delete_MapLong2LongP7_objectS0_ in swigfaiss_wrap.o
"_PyExc_ImportError", referenced from:
_init_swigfaiss in swigfaiss_wrap.o
"_PyExc_IndexError", referenced from:
l_switch.table._ZL25_wrap_delete_MapLong2LongP7_objectS0_ in swigfaiss_wrap.o
"_PyExc_MemoryError", referenced from:
l_switch.table._ZL25_wrap_delete_MapLong2LongP7_objectS0_ in swigfaiss_wrap.o
"_PyExc_NotImplementedError", referenced from:
_wrap_generalized_hammings_knn(_object, _object) in swigfaiss_wrap.o
_wrap_RandomGenerator_rand_int(_object, _object) in swigfaiss_wrap.o
_wrap_new_RandomGenerator(_object, _object) in swigfaiss_wrap.o
_wrap_imbalance_factor(_object, _object) in swigfaiss_wrap.o
_wrap_pairwise_L2sqr(_object, _object) in swigfaiss_wrap.o
_wrap_merge_result_table_with(_object, _object) in swigfaiss_wrap.o
_wrap_fvecs_maybe_subsample(_object, _object) in swigfaiss_wrap.o
...
"_PyExc_OverflowError", referenced from:
Swig_var_distance_compute_blas_threshold_set(_object) in swigfaiss_wrap.o
_wrap_FloatVector_push_back(_object, _object) in swigfaiss_wrap.o
_wrap_FloatVector_at(_object, _object) in swigfaiss_wrap.o
_wrap_FloatVector_resize(_object, _object) in swigfaiss_wrap.o
_wrap_DoubleVector_at(_object, _object) in swigfaiss_wrap.o
_wrap_DoubleVector_resize(_object, _object) in swigfaiss_wrap.o
_wrap_ByteVector_push_back(_object, _object) in swigfaiss_wrap.o
...
"_PyExc_RuntimeError", referenced from:
_init_swigfaiss in swigfaiss_wrap.o
Swig_var_indexPQ_stats_set(_object) in swigfaiss_wrap.o
Swig_var_indexIVF_stats_set(_object) in swigfaiss_wrap.o
Swig_var_hnsw_stats_set(_object) in swigfaiss_wrap.o
Swig_var_indexIVFPQ_stats_set(_object) in swigfaiss_wrap.o
_wrap_FloatVector_push_back(_object, _object) in swigfaiss_wrap.o
_wrap_FloatVector_clear(_object, _object) in swigfaiss_wrap.o
...
"_PyExc_SyntaxError", referenced from:
l_switch.table._ZL25_wrap_delete_MapLong2LongP7_objectS0_ in swigfaiss_wrap.o
"_PyExc_SystemError", referenced from:
l_switch.table._ZL25_wrap_delete_MapLong2LongP7_objectS0_ in swigfaiss_wrap.o
"_PyExc_TypeError", referenced from:
Swig_var_distance_compute_blas_threshold_set(_object) in swigfaiss_wrap.o
SwigPyObject_append(_object, _object) in swigfaiss_wrap.o
_wrap_FloatVector_push_back(_object, _object) in swigfaiss_wrap.o
_wrap_FloatVector_at(_object, _object) in swigfaiss_wrap.o
_wrap_FloatVector_resize(_object, _object) in swigfaiss_wrap.o
_wrap_DoubleVector_push_back(_object, _object) in swigfaiss_wrap.o
_wrap_DoubleVector_at(_object, _object) in swigfaiss_wrap.o
...
"_PyExc_ValueError", referenced from:
swig_ptr(_object) in swigfaiss_wrap.o
Swig_var_indexPQ_stats_set(_object) in swigfaiss_wrap.o
Swig_var_indexIVF_stats_set(_object) in swigfaiss_wrap.o
Swig_var_hnsw_stats_set(_object) in swigfaiss_wrap.o
Swig_var_indexIVFPQ_stats_set(_object) in swigfaiss_wrap.o
_wrap_OperatingPointVector_push_back(_object, _object) in swigfaiss_wrap.o
_wrap_FloatVectorVector_push_back(_object, _object) in swigfaiss_wrap.o
...
"_PyExc_ZeroDivisionError", referenced from:
l_switch.table._ZL25_wrap_delete_MapLong2LongP7_objectS0_ in swigfaiss_wrap.o
"_PyFloat_AsDouble", referenced from:
_wrap_FloatVector_push_back(_object, _object) in swigfaiss_wrap.o
_wrap_DoubleVector_push_back(_object, _object) in swigfaiss_wrap.o
_wrap_range_search_L2sqr(_object, _object) in swigfaiss_wrap.o
_wrap_range_search_inner_product(_object, _object) in swigfaiss_wrap.o
_wrap_fvec_madd(_object, _object) in swigfaiss_wrap.o
_wrap_fvec_madd_and_argmin(_object, _object) in swigfaiss_wrap.o
_wrap_Index_range_search(_object, _object) in swigfaiss_wrap.o
...
"_PyFloat_FromDouble", referenced from:
_wrap_FloatVector_at(_object, _object) in swigfaiss_wrap.o
_wrap_DoubleVector_at(_object, _object) in swigfaiss_wrap.o
_wrap_getmillisecs(_object, _object) in swigfaiss_wrap.o
_wrap_RandomGenerator_rand_float(_object, _object) in swigfaiss_wrap.o
_wrap_RandomGenerator_rand_double(_object, _object) in swigfaiss_wrap.o
_wrap_fvec_L2sqr(_object, _object) in swigfaiss_wrap.o
_wrap_fvec_inner_product(_object, _object) in swigfaiss_wrap.o
...
"_PyFloat_Type", referenced from:
_wrap_FloatVector_push_back(_object, _object) in swigfaiss_wrap.o
_wrap_DoubleVector_push_back(_object, _object) in swigfaiss_wrap.o
_wrap_range_search_L2sqr(_object, _object) in swigfaiss_wrap.o
_wrap_range_search_inner_product(_object, _object) in swigfaiss_wrap.o
_wrap_fvec_madd(_object, _object) in swigfaiss_wrap.o
_wrap_fvec_madd_and_argmin(_object, _object) in swigfaiss_wrap.o
_wrap_Index_range_search(_object, _object) in swigfaiss_wrap.o
...
"_PyImport_ImportModule", referenced from:
_init_swigfaiss in swigfaiss_wrap.o
"_PyInstance_NewRaw", referenced from:
SWIG_Python_NewPointerObj(_object, void, swig_type_info, int) in swigfaiss_wrap.o
"_PyInstance_Type", referenced from:
SWIG_Python_GetSwigThis(_object) in swigfaiss_wrap.o
"_PyInt_AsLong", referenced from:
Swig_var_distance_compute_blas_threshold_set(_object) in swigfaiss_wrap.o
_wrap_FloatVector_push_back(_object, _object) in swigfaiss_wrap.o
_wrap_FloatVector_at(_object, _object) in swigfaiss_wrap.o
_wrap_FloatVector_resize(_object, _object) in swigfaiss_wrap.o
_wrap_DoubleVector_push_back(_object, _object) in swigfaiss_wrap.o
_wrap_DoubleVector_at(_object, _object) in swigfaiss_wrap.o
_wrap_DoubleVector_resize(_object, _object) in swigfaiss_wrap.o
...
"_PyInt_FromLong", referenced from:
_init_swigfaiss in swigfaiss_wrap.o
Swig_var_distance_compute_blas_threshold_get() in swigfaiss_wrap.o
Swig_var_IO_FLAG_MMAP_get() in swigfaiss_wrap.o
Swig_var_IO_FLAG_READ_ONLY_get() in swigfaiss_wrap.o
_wrap_FloatVector_size(_object, _object) in swigfaiss_wrap.o
_wrap_DoubleVector_size(_object, _object) in swigfaiss_wrap.o
_wrap_ByteVector_size(_object, _object) in swigfaiss_wrap.o
...
"_PyLong_AsDouble", referenced from:
_wrap_FloatVector_push_back(_object, _object) in swigfaiss_wrap.o
_wrap_DoubleVector_push_back(_object, _object) in swigfaiss_wrap.o
_wrap_range_search_L2sqr(_object, _object) in swigfaiss_wrap.o
_wrap_range_search_inner_product(_object, _object) in swigfaiss_wrap.o
_wrap_fvec_madd(_object, _object) in swigfaiss_wrap.o
_wrap_fvec_madd_and_argmin(_object, _object) in swigfaiss_wrap.o
_wrap_Index_range_search(_object, _object) in swigfaiss_wrap.o
...
"_PyLong_AsLong", referenced from:
Swig_var_distance_compute_blas_threshold_set(_object) in swigfaiss_wrap.o
_wrap_LongVector_push_back(_object, _object) in swigfaiss_wrap.o
_wrap_IntVector_push_back(_object, _object) in swigfaiss_wrap.o
_wrap_hammings_knn(_object, _object) in swigfaiss_wrap.o
_wrap_hamming_count_thres(_object, _object) in swigfaiss_wrap.o
_wrap_match_hamming_thres(_object, _object) in swigfaiss_wrap.o
_wrap_crosshamming_count_thres(_object, _object) in swigfaiss_wrap.o
...
"_PyLong_AsUnsignedLong", referenced from:
_wrap_FloatVector_at(_object, _object) in swigfaiss_wrap.o
_wrap_FloatVector_resize(_object, _object) in swigfaiss_wrap.o
_wrap_DoubleVector_at(_object, _object) in swigfaiss_wrap.o
_wrap_DoubleVector_resize(_object, _object) in swigfaiss_wrap.o
_wrap_ByteVector_push_back(_object, _object) in swigfaiss_wrap.o
_wrap_ByteVector_at(_object, _object) in swigfaiss_wrap.o
_wrap_ByteVector_resize(_object, _object) in swigfaiss_wrap.o
...
"_PyLong_FromUnsignedLong", referenced from:
_wrap_FloatVector_size(_object, _object) in swigfaiss_wrap.o
_wrap_DoubleVector_size(_object, _object) in swigfaiss_wrap.o
_wrap_ByteVector_size(_object, _object) in swigfaiss_wrap.o
_wrap_Uint64Vector_size(_object, _object) in swigfaiss_wrap.o
_wrap_Uint64Vector_at(_object, _object) in swigfaiss_wrap.o
_wrap_LongVector_size(_object, _object) in swigfaiss_wrap.o
_wrap_IntVector_size(_object, _object) in swigfaiss_wrap.o
...
"_PyLong_FromVoidPtr", referenced from:
SwigPyObject_long(SwigPyObject) in swigfaiss_wrap.o
SwigPyObject_format(char const, SwigPyObject) in swigfaiss_wrap.o
"_PyModule_AddObject", referenced from:
_init_swigfaiss in swigfaiss_wrap.o
"_PyModule_GetDict", referenced from:
_init_swigfaiss in swigfaiss_wrap.o
"_PyObject_Call", referenced from:
SWIG_Python_NewPointerObj(_object, void, swig_type_info, int) in swigfaiss_wrap.o
"_PyObject_CallFunctionObjArgs", referenced from:
SwigPyObject_dealloc(_object) in swigfaiss_wrap.o
SWIG_Python_ConvertPtrAndOwn(_object, void, swig_type_info, int, int) in swigfaiss_wrap.o
"_PyObject_Free", referenced from:
SwigPyObject_dealloc(_object) in swigfaiss_wrap.o
"_PyObject_GenericGetAttr", referenced from:
SwigPyObject_TypeOnce()::tmp in swigfaiss_wrap.o
"_PyObject_GetAttr", referenced from:
SWIG_Python_GetSwigThis(_object) in swigfaiss_wrap.o
"_PyObject_GetAttrString", referenced from:
_init_swigfaiss in swigfaiss_wrap.o
SwigPyClientData_New(_object) in swigfaiss_wrap.o
"_PyObject_Init", referenced from:
SWIG_Python_NewPointerObj(_object, void, swig_type_info, int) in swigfaiss_wrap.o
_init_swigfaiss in swigfaiss_wrap.o
SwigPyObject_dealloc(_object) in swigfaiss_wrap.o
"_PyObject_IsTrue", referenced from:
SwigPyObject_own(_object, _object) in swigfaiss_wrap.o
_wrap_merge_result_table_with(_object, _object) in swigfaiss_wrap.o
_wrap_fvecs_maybe_subsample(_object, _object) in swigfaiss_wrap.o
_wrap_Index_verbose_set(_object, _object) in swigfaiss_wrap.o
_wrap_Index_is_trained_set(_object, _object) in swigfaiss_wrap.o
_wrap_ClusteringParameters_verbose_set(_object, _object) in swigfaiss_wrap.o
_wrap_ClusteringParameters_spherical_set(_object, _object) in swigfaiss_wrap.o
...
"_PyObject_Malloc", referenced from:
SWIG_Python_NewPointerObj(_object, void, swig_type_info, int) in swigfaiss_wrap.o
_init_swigfaiss in swigfaiss_wrap.o
SwigPyObject_dealloc(_object) in swigfaiss_wrap.o
"_PyObject_Size", referenced from:
_wrap_generalized_hammings_knn(_object, _object) in swigfaiss_wrap.o
_wrap_RandomGenerator_rand_int(_object, _object) in swigfaiss_wrap.o
_wrap_new_RandomGenerator(_object, _object) in swigfaiss_wrap.o
_wrap_imbalance_factor(_object, _object) in swigfaiss_wrap.o
_wrap_pairwise_L2sqr(_object, _object) in swigfaiss_wrap.o
_wrap_merge_result_table_with(_object, _object) in swigfaiss_wrap.o
_wrap_fvecs_maybe_subsample(_object, _object) in swigfaiss_wrap.o
...
"_PyString_AsString", referenced from:
SWIG_AsCharPtrAndSize(_object, char, unsigned long, int) in swigfaiss_wrap.o
swig_varlink_print(swig_varlinkobject, __sFILE, int) in swigfaiss_wrap.o
"_PyString_AsStringAndSize", referenced from:
_wrap_new_OnDiskInvertedLists(_object, _object) in swigfaiss_wrap.o
_wrap_write_index(_object, _object) in swigfaiss_wrap.o
_wrap_read_index(_object, _object) in swigfaiss_wrap.o
_wrap_ParameterSpace_set_index_parameters(_object, _object) in swigfaiss_wrap.o
_wrap_index_factory(_object, _object) in swigfaiss_wrap.o
SWIG_AsCharPtrAndSize(_object, char, unsigned long, int) in swigfaiss_wrap.o
"_PyString_ConcatAndDel", referenced from:
SwigPyObject_repr(SwigPyObject) in swigfaiss_wrap.o
swig_varlink_str(swig_varlinkobject) in swigfaiss_wrap.o
"_PyString_Format", referenced from:
SwigPyObject_format(char const, SwigPyObject) in swigfaiss_wrap.o
"_PyString_FromFormat", referenced from:
SwigPyObject_repr(SwigPyObject) in swigfaiss_wrap.o
"_PyString_FromString", referenced from:
SWIG_Python_NewPointerObj(_object, void, swig_type_info, int) in swigfaiss_wrap.o
SwigPyObject_format(char const, SwigPyObject) in swigfaiss_wrap.o
SWIG_Python_GetSwigThis(_object) in swigfaiss_wrap.o
SWIG_Python_DestroyModule(_object) in swigfaiss_wrap.o
swig_varlink_repr(swig_varlinkobject) in swigfaiss_wrap.o
swig_varlink_str(swig_varlinkobject) in swigfaiss_wrap.o
"_PyString_FromStringAndSize", referenced from:
_wrap_PolysemousTraining_log_pattern_get(_object, _object) in swigfaiss_wrap.o
_wrap_Level1Quantizer_quantizer_trains_alone_get(_object, _object) in swigfaiss_wrap.o
_wrap_OnDiskInvertedLists_filename_get(_object, _object) in swigfaiss_wrap.o
_wrap_OperatingPoint_key_get(_object, _object) in swigfaiss_wrap.o
_wrap_ParameterRange_name_get(_object, _object) in swigfaiss_wrap.o
_wrap_ParameterSpace_combination_name(_object, _object) in swigfaiss_wrap.o
"_PyTuple_New", referenced from:
SwigPyObject_format(char const, SwigPyObject) in swigfaiss_wrap.o
SwigPyClientData_New(_object) in swigfaiss_wrap.o
"_PyTuple_SetItem", referenced from:
SwigPyObject_format(char const, SwigPyObject) in swigfaiss_wrap.o
SwigPyClientData_New(_object) in swigfaiss_wrap.o
"_PyType_IsSubtype", referenced from:
swig_ptr(_object) in swigfaiss_wrap.o
_wrap_FloatVector_push_back(_object, _object) in swigfaiss_wrap.o
_wrap_DoubleVector_push_back(_object, _object) in swigfaiss_wrap.o
_wrap_range_search_L2sqr(_object, _object) in swigfaiss_wrap.o
_wrap_range_search_inner_product(_object, _object) in swigfaiss_wrap.o
_wrap_fvec_madd(_object, _object) in swigfaiss_wrap.o
_wrap_fvec_madd_and_argmin(_object, _object) in swigfaiss_wrap.o
...
"_PyType_Ready", referenced from:
SWIG_Python_NewPointerObj(_object, void, swig_type_info, int) in swigfaiss_wrap.o
_init_swigfaiss in swigfaiss_wrap.o
SwigPyObject_dealloc(_object) in swigfaiss_wrap.o
SwigPyObject_append(_object, _object) in swigfaiss_wrap.o
SWIG_Python_GetSwigThis(_object) in swigfaiss_wrap.o
"_Py_InitModule4_64", referenced from:
_init_swigfaiss in swigfaiss_wrap.o
"__PyInstance_Lookup", referenced from:
SWIG_Python_GetSwigThis(_object) in swigfaiss_wrap.o
"__PyObject_GetDictPtr", referenced from:
SWIG_Python_NewPointerObj(_object, void, swig_type_info, int) in swigfaiss_wrap.o
SWIG_Python_GetSwigThis(_object) in swigfaiss_wrap.o
"__PyObject_New", referenced from:
SWIG_Python_NewPointerObj(_object, void, swig_type_info, int) in swigfaiss_wrap.o
"__PyWeakref_CallableProxyType", referenced from:
SWIG_Python_GetSwigThis(_object) in swigfaiss_wrap.o
"__PyWeakref_ProxyType", referenced from:
SWIG_Python_GetSwigThis(_object) in swigfaiss_wrap.o
"__Py_NoneStruct", referenced from:
SWIG_Python_NewPointerObj(_object, void, swig_type_info, int) in swigfaiss_wrap.o
SwigPyObject_disown(_object) in swigfaiss_wrap.o
SwigPyObject_acquire(_object) in swigfaiss_wrap.o
SwigPyObject_own(_object, _object) in swigfaiss_wrap.o
SwigPyObject_append(_object, _object) in swigfaiss_wrap.o
SwigPyObject_next(_object) in swigfaiss_wrap.o
_wrap_FloatVector_push_back(_object, _object) in swigfaiss_wrap.o
...
"__Py_NotImplementedStruct", referenced from:
SwigPyObject_richcompare(SwigPyObject, SwigPyObject, int) in swigfaiss_wrap.o
ld: symbol(s) not found for architecture x86_64
clang-6.0: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: [_swigfaiss.so] Error 1
make: ** [py] Error 2
Could you paste your makefile.inc?
I have seen the same issue but resolved with the following steps:
makefile.inc: Add -undefined dynamic_lookup to PYTHONLIB (Relevant: https://github.com/pytorch/pytorch/commit/73f6715f4725a0723d8171d3131e09ac7abf0666).
# The Python include directories for the current python executable
PYTHON=python
PYTHON_INC=$(shell python-config --includes)
NUMPY_INC=$(shell python -c "import numpy ; print(numpy.get_include())")
PYTHONCFLAGS=-I${PYTHON_INC} -I${NUMPY_INC}
PYTHONLIB=-undefined dynamic_lookup
python/Makefile: Add PYTHONLIB at the end.
_swigfaiss.so: swigfaiss_wrap.o ../libfaiss.a
$(CXX) $(SHAREDFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) $(PYTHONLIB)
_swigfaiss_gpu.so: swigfaiss_gpu_wrap.o ../gpu/libgpufaiss.a ../libfaiss.a
$(CXX) $(SHAREDFLAGS) $(NVCCLDFLAGS) $(LDFLAGS) -o $@ $^ $(NVCCLIBS) $(LIBS) $(PYTHONLIB)
Thanks a lot, Kyamagu, it works for my issue.
Most helpful comment
I have seen the same issue but resolved with the following steps:
makefile.inc: Add-undefined dynamic_lookuptoPYTHONLIB(Relevant: https://github.com/pytorch/pytorch/commit/73f6715f4725a0723d8171d3131e09ac7abf0666).python/Makefile: AddPYTHONLIBat the end.