Skip to content

'ld: symbol(s) not found for architecture x86_64' Problem with compiling the intro_to_forpy.F90 example on MacOS #44

@sankalpjena

Description

@sankalpjena

I'm using the following gfortran:
GNU Fortran (Homebrew GCC 11.3.0_1) 11.3.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

My python version is 3.9.12 and package manager is conda.

Upon compiling the program with: gfortran intro_to_forpy.F90 forpy_mod.o -fno-lto python3-config --ldflags
I get the following error:

$ gfortran intro_to_forpy.F90 forpy_mod.o -fno-lto `python3-config --ldflags`
Undefined symbols for architecture x86_64:
  "_PyBool_FromLong", referenced from:
      ___forpy_mod_MOD_forpy_initialize_bool in forpy_mod.o
  "_PyBuffer_FillContiguousStrides", referenced from:
      ___forpy_mod_MOD_ndarray_create_nocopy_helper in forpy_mod.o
  "_PyBuffer_IsContiguous", referenced from:
      ___forpy_mod_MOD_get_data_helper in forpy_mod.o
  "_PyBuffer_Release", referenced from:
      ___forpy_mod_MOD_get_data_helper in forpy_mod.o
  "_PyBytes_AsString", referenced from:
      ___forpy_mod_MOD_unbox_value_char_1d in forpy_mod.o
  "_PyBytes_FromStringAndSize", referenced from:
      ___forpy_mod_MOD_box_value_char_1d_as_bytestr in forpy_mod.o
      ___forpy_mod_MOD_box_value_chars_as_bytestr in forpy_mod.o
  "_PyComplex_AsCComplex", referenced from:
      ___forpy_mod_MOD_unbox_value_complex_real64 in forpy_mod.o
      ___forpy_mod_MOD_unbox_value_complex_real32 in forpy_mod.o
  "_PyComplex_FromDoubles", referenced from:
      ___forpy_mod_MOD_box_value_complex_real64 in forpy_mod.o
      ___forpy_mod_MOD_box_value_complex_real32 in forpy_mod.o
      ___forpy_mod_MOD_forpy_initialize_complex in forpy_mod.o
  "_PyDict_Clear", referenced from:
      ___forpy_mod_MOD_dict_clear in forpy_mod.o
  "_PyDict_Copy", referenced from:
      ___forpy_mod_MOD_dict_copy in forpy_mod.o
  "_PyDict_GetItemString", referenced from:
      ___forpy_mod_MOD_print_py in forpy_mod.o
      ___forpy_mod_MOD_forpy_initialize_exceptions in forpy_mod.o
  "_PyDict_Items", referenced from:
      ___forpy_mod_MOD_dict_items in forpy_mod.o
  "_PyDict_Keys", referenced from:
      ___forpy_mod_MOD_dict_keys in forpy_mod.o
  "_PyDict_New", referenced from:
      ___forpy_mod_MOD_dict_create in forpy_mod.o
  "_PyDict_Values", referenced from:
      ___forpy_mod_MOD_dict_values in forpy_mod.o
  "_PyErr_Clear", referenced from:
      ___forpy_mod_MOD_err_clear in forpy_mod.o
      ___forpy_mod_MOD_is_ndarray in forpy_mod.o
      ___forpy_mod_MOD_forpy_initialize_exceptions in forpy_mod.o
  "_PyErr_GivenExceptionMatches", referenced from:
      ___forpy_mod_MOD_exception_matches in forpy_mod.o
  "_PyErr_Occurred", referenced from:
      ___forpy_mod_MOD_have_exception in forpy_mod.o
      ___forpy_mod_MOD_err_print in forpy_mod.o
      ___forpy_mod_MOD_exception_matches in forpy_mod.o
      ___forpy_mod_MOD_unbox_value_complex_real64 in forpy_mod.o
      ___forpy_mod_MOD_unbox_value_complex_real32 in forpy_mod.o
      ___forpy_mod_MOD_unbox_value_real64 in forpy_mod.o
      ___forpy_mod_MOD_unbox_value_real32 in forpy_mod.o
      ...
  "_PyErr_Print", referenced from:
      ___forpy_mod_MOD_err_print in forpy_mod.o
  "_PyErr_SetString", referenced from:
      ___forpy_mod_MOD_raise_exception in forpy_mod.o
  "_PyEval_GetBuiltins", referenced from:
      ___forpy_mod_MOD_print_py in forpy_mod.o
      ___forpy_mod_MOD_forpy_initialize_exceptions in forpy_mod.o
  "_PyFloat_AsDouble", referenced from:
      ___forpy_mod_MOD_unbox_value_real64 in forpy_mod.o
      ___forpy_mod_MOD_unbox_value_real32 in forpy_mod.o
  "_PyFloat_FromDouble", referenced from:
      ___forpy_mod_MOD_box_value_real64 in forpy_mod.o
      ___forpy_mod_MOD_box_value_real32 in forpy_mod.o
      ___forpy_mod_MOD_forpy_initialize_float in forpy_mod.o
  "_PyImport_ImportModule", referenced from:
      ___forpy_mod_MOD_import_py in forpy_mod.o
      ___forpy_mod_MOD_forpy_initialize_numpy in forpy_mod.o
  "_PyList_Append", referenced from:
      ___forpy_mod_MOD_list_append_chars in forpy_mod.o
      ___forpy_mod_MOD_list_append_char_1d in forpy_mod.o
      ___forpy_mod_MOD_list_append_logical in forpy_mod.o
      ___forpy_mod_MOD_list_append_complex_real64 in forpy_mod.o
      ___forpy_mod_MOD_list_append_complex_real32 in forpy_mod.o
      ___forpy_mod_MOD_list_append_real64 in forpy_mod.o
      ___forpy_mod_MOD_list_append_real32 in forpy_mod.o
      ...
  "_PyList_Insert", referenced from:
      ___forpy_mod_MOD_list_insert_int64 in forpy_mod.o
      ___forpy_mod_MOD_list_insert_int32 in forpy_mod.o
  "_PyList_New", referenced from:
      ___forpy_mod_MOD_list_create_empty in forpy_mod.o
  "_PyList_Reverse", referenced from:
      ___forpy_mod_MOD_list_reverse in forpy_mod.o
  "_PyList_Sort", referenced from:
      ___forpy_mod_MOD_list_sort in forpy_mod.o
  "_PyLong_AsLongLongAndOverflow", referenced from:
      ___forpy_mod_MOD_unbox_value_int64 in forpy_mod.o
      ___forpy_mod_MOD_unbox_value_int32 in forpy_mod.o
  "_PyLong_FromLongLong", referenced from:
      ___forpy_mod_MOD_box_value_int64_as_long in forpy_mod.o
      ___forpy_mod_MOD_box_value_int32_as_long in forpy_mod.o
  "_PyMapping_HasKey", referenced from:
      ___forpy_mod_MOD_mapping_contains in forpy_mod.o
  "_PyMemoryView_FromBuffer", referenced from:
      ___forpy_mod_MOD_ndarray_create_nocopy_helper in forpy_mod.o
  "_PyModule_AddObject", referenced from:
      ___forpy_mod_MOD_pythonmodule_add_object in forpy_mod.o
  "_PyModule_Create2", referenced from:
      ___forpy_mod_MOD_pythonmodule_init in forpy_mod.o
  "_PyObject_Call", referenced from:
      ___forpy_mod_MOD_ndarray_create_nocopy_helper in forpy_mod.o
      ___forpy_mod_MOD_call_py_object in forpy_mod.o
  "_PyObject_DelItem", referenced from:
      ___forpy_mod_MOD_mapping_delitem_chars in forpy_mod.o
      ___forpy_mod_MOD_mapping_delitem_int64 in forpy_mod.o
      ___forpy_mod_MOD_mapping_delitem_int32 in forpy_mod.o
      ___forpy_mod_MOD_mapping_delitem_object in forpy_mod.o
  "_PyObject_GetAttr", referenced from:
      ___forpy_mod_MOD_object_getattribute in forpy_mod.o
      ___forpy_mod_MOD_forpy_initialize_numpy in forpy_mod.o
  "_PyObject_GetBuffer", referenced from:
      ___forpy_mod_MOD_get_data_helper in forpy_mod.o
  "_PyObject_GetItem", referenced from:
      ___forpy_mod_MOD_dict_get_helper2 in forpy_mod.o
      ___forpy_mod_MOD_dict_get_helper in forpy_mod.o
      ___forpy_mod_MOD_mapping_getitem_chars_chars in forpy_mod.o
      ___forpy_mod_MOD_mapping_getitem_chars_char_1d in forpy_mod.o
      ___forpy_mod_MOD_mapping_getitem_chars_logical in forpy_mod.o
      ___forpy_mod_MOD_mapping_getitem_chars_complex_real64 in forpy_mod.o
      ___forpy_mod_MOD_mapping_getitem_chars_complex_real32 in forpy_mod.o
      ...
  "_PyObject_IsInstance", referenced from:
      ___forpy_mod_MOD_is_ndarray in forpy_mod.o
  "_PyObject_IsTrue", referenced from:
      ___forpy_mod_MOD_unbox_value_logical in forpy_mod.o
  "_PyObject_Length", referenced from:
      ___forpy_mod_MOD_unbox_value_char_1d in forpy_mod.o
      ___forpy_mod_MOD_mapping_len_int64 in forpy_mod.o
      ___forpy_mod_MOD_mapping_len_int32 in forpy_mod.o
      ___forpy_mod_MOD_sequence_len_int64 in forpy_mod.o
      ___forpy_mod_MOD_sequence_len_int32 in forpy_mod.o
  "_PyObject_SetAttr", referenced from:
      ___forpy_mod_MOD_object_delattr in forpy_mod.o
      ___forpy_mod_MOD_object_setattr in forpy_mod.o
  "_PyObject_SetItem", referenced from:
      ___forpy_mod_MOD_dict_get_helper in forpy_mod.o
      ___forpy_mod_MOD_mapping_setitem_chars_chars in forpy_mod.o
      ___forpy_mod_MOD_mapping_setitem_chars_char_1d in forpy_mod.o
      ___forpy_mod_MOD_mapping_setitem_chars_logical in forpy_mod.o
      ___forpy_mod_MOD_mapping_setitem_chars_complex_real64 in forpy_mod.o
      ___forpy_mod_MOD_mapping_setitem_chars_complex_real32 in forpy_mod.o
      ___forpy_mod_MOD_mapping_setitem_chars_real64 in forpy_mod.o
      ...
  "_PyObject_Str", referenced from:
      ___forpy_mod_MOD_cast_nonstrict_to_chars in forpy_mod.o
      ___forpy_mod_MOD_str_create_object in forpy_mod.o
  "_PyRun_SimpleString", referenced from:
      ___forpy_mod_MOD_run_string in forpy_mod.o
      ___forpy_mod_MOD_forpy_initialize_sys_argv in forpy_mod.o
  "_PySequence_Concat", referenced from:
      ___forpy_mod_MOD_tuple_add in forpy_mod.o
      ___forpy_mod_MOD_list_add in forpy_mod.o
  "_PySequence_Contains", referenced from:
      ___forpy_mod_MOD_sequence_contains in forpy_mod.o
  "_PySequence_Count", referenced from:
      ___forpy_mod_MOD_sequence_count_int64 in forpy_mod.o
      ___forpy_mod_MOD_sequence_count_int32 in forpy_mod.o
  "_PySequence_DelItem", referenced from:
      ___forpy_mod_MOD_list_delitem_int64 in forpy_mod.o
      ___forpy_mod_MOD_list_delitem_int32 in forpy_mod.o
  "_PySequence_GetItem", referenced from:
      ___forpy_mod_MOD_sequence_getitem_int64_chars in forpy_mod.o
      ___forpy_mod_MOD_sequence_getitem_int64_char_1d in forpy_mod.o
      ___forpy_mod_MOD_sequence_getitem_int64_logical in forpy_mod.o
      ___forpy_mod_MOD_sequence_getitem_int64_complex_real64 in forpy_mod.o
      ___forpy_mod_MOD_sequence_getitem_int64_complex_real32 in forpy_mod.o
      ___forpy_mod_MOD_sequence_getitem_int64_real64 in forpy_mod.o
      ___forpy_mod_MOD_sequence_getitem_int64_real32 in forpy_mod.o
      ...
  "_PySequence_Index", referenced from:
      ___forpy_mod_MOD_sequence_index_int64 in forpy_mod.o
      ___forpy_mod_MOD_sequence_index_int32 in forpy_mod.o
  "_PySequence_List", referenced from:
      ___forpy_mod_MOD_list_create_object in forpy_mod.o
  "_PySequence_SetItem", referenced from:
      ___forpy_mod_MOD_mutablesequence_setitem_int64_chars in forpy_mod.o
      ___forpy_mod_MOD_mutablesequence_setitem_int64_char_1d in forpy_mod.o
      ___forpy_mod_MOD_mutablesequence_setitem_int64_logical in forpy_mod.o
      ___forpy_mod_MOD_mutablesequence_setitem_int64_complex_real64 in forpy_mod.o
      ___forpy_mod_MOD_mutablesequence_setitem_int64_complex_real32 in forpy_mod.o
      ___forpy_mod_MOD_mutablesequence_setitem_int64_real64 in forpy_mod.o
      ___forpy_mod_MOD_mutablesequence_setitem_int64_real32 in forpy_mod.o
      ...
  "_PySequence_Tuple", referenced from:
      ___forpy_mod_MOD_tuple_create_object in forpy_mod.o
  "_PySys_GetObject", referenced from:
      ___forpy_mod_MOD_get_sys_path in forpy_mod.o
  "_PyTuple_New", referenced from:
      ___forpy_mod_MOD_ndarray_create_nocopy_helper in forpy_mod.o
      ___forpy_mod_MOD_tuple_create_int64 in forpy_mod.o
      ___forpy_mod_MOD_tuple_create_int32 in forpy_mod.o
  "_PyTuple_SetItem", referenced from:
      ___forpy_mod_MOD_ndarray_create_nocopy_helper in forpy_mod.o
      ___forpy_mod_MOD_tuple_setitem_int64_object in forpy_mod.o
      ___forpy_mod_MOD_tuple_setitem_int32_object in forpy_mod.o
      ___forpy_mod_MOD_tuple_setitem_int64_chars in forpy_mod.o
      ___forpy_mod_MOD_tuple_setitem_int64_char_1d in forpy_mod.o
      ___forpy_mod_MOD_tuple_setitem_int64_logical in forpy_mod.o
      ___forpy_mod_MOD_tuple_setitem_int64_complex_real64 in forpy_mod.o
      ...
  "_PyType_IsSubtype", referenced from:
      ___forpy_mod_MOD_is_unicode in forpy_mod.o
      ___forpy_mod_MOD_is_bool in forpy_mod.o
      ___forpy_mod_MOD_is_complex in forpy_mod.o
      ___forpy_mod_MOD_is_float in forpy_mod.o
  "_PyUnicode_AsUTF8AndSize", referenced from:
      ___forpy_mod_MOD_unbox_value_char_1d in forpy_mod.o
  "_PyUnicode_DecodeUTF8", referenced from:
      ___forpy_mod_MOD_box_value_char_1d_as_unicodestr in forpy_mod.o
      ___forpy_mod_MOD_box_value_chars_as_unicodestr in forpy_mod.o
      ___forpy_mod_MOD_forpy_initialize_unicode in forpy_mod.o
  "_Py_DecRef", referenced from:
      ___forpy_mod_MOD_cast_nonstrict_to_chars in forpy_mod.o
      ___forpy_mod_MOD_ndarray_create_nocopy_helper in forpy_mod.o
      ___forpy_mod_MOD_dict_get_chars_chars in forpy_mod.o
      ___forpy_mod_MOD_dict_get_chars_char_1d in forpy_mod.o
      ___forpy_mod_MOD_dict_get_chars_logical in forpy_mod.o
      ___forpy_mod_MOD_dict_get_chars_complex_real64 in forpy_mod.o
      ___forpy_mod_MOD_dict_get_chars_complex_real32 in forpy_mod.o
      ...
  "_Py_Finalize", referenced from:
      ___forpy_mod_MOD_forpy_finalize in forpy_mod.o
  "_Py_IncRef", referenced from:
      ___forpy_mod_MOD_unsafe_cast_from_c_ptr in forpy_mod.o
      ___forpy_mod_MOD_pythonmodule_add_object in forpy_mod.o
      ___forpy_mod_MOD_assign_py_nonetype in forpy_mod.o
      ___forpy_mod_MOD_assign_py_module_py in forpy_mod.o
      ___forpy_mod_MOD_assign_py_type_py in forpy_mod.o
      ___forpy_mod_MOD_assign_py_ndarray in forpy_mod.o
      ___forpy_mod_MOD_assign_py_dict in forpy_mod.o
      ...
  "_Py_Initialize", referenced from:
      ___forpy_mod_MOD_forpy_initialize in forpy_mod.o
  "_Py_IsInitialized", referenced from:
      ___forpy_mod_MOD_forpy_initialize in forpy_mod.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status

Could you please help?

Thanking you

Best regards
Sankalp Jena

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions