Faiss: Failed Install python faiss on Mac system

Created on 23 Jun 2018  路  3Comments  路  Source: facebookresearch/faiss

Summary

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

  1. cd faiss/python
    git checkout swigfaiss_gpu_wrap.cxx swigfaiss_gpu.py swigfaiss_wrap.cxx swigfaiss.py
    make py
  2. export LD_LIBRARY_PATH=/anaconda2/lib/python2.7/site-packages/faiss/:/anaconda2/pkgs/faiss-cpu-1.2.1-py27_cuda0.0_1/lib/python2.7/site-packages/faiss/
  3. brew install swig
    All are not workable!

Platform

OS:

Running on :

  • [ *] CPU

Reproduction instructions

$ 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

install

Most helpful comment

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)

All 3 comments

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.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

linghuang picture linghuang  路  3Comments

Tony-Hou picture Tony-Hou  路  3Comments

zoe-cheung picture zoe-cheung  路  3Comments

ilyakhov picture ilyakhov  路  3Comments

maozezhong picture maozezhong  路  3Comments