cython-book icon indicating copy to clipboard operation
cython-book copied to clipboard

Issue with linking on Mac

Open akaRem opened this issue 10 years ago • 1 comments

Hi! I'm trying to make chapter2 / server3-4 and have problem with linking. Why could this happen? How to fix?

(py275)MacBook-Air-Ivan:cython-book (master) $ cd ./chapter2/messaging-server/server4                           
(py275)MacBook-Air-Ivan:server4 (master) $ make
cython -2 -o pyserver.c pyserver.pyx
gcc -g -O2 -Wall -fpic -c server.c -o server.o
gcc -g -O2 -Wall -fpic -c pyserver.c -o pyserver.o `python-config --cflags`
pyserver.c:2157:28: warning: unused function '__Pyx_PyObject_AsString' [-Wunused-function]
static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) {
                           ^
pyserver.c:2154:32: warning: unused function '__Pyx_PyUnicode_FromString' [-Wunused-function]
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {
                               ^
pyserver.c:298:29: warning: unused function '__Pyx_Py_UNICODE_strlen' [-Wunused-function]
static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u)
                            ^
pyserver.c:2269:33: warning: unused function '__Pyx_PyIndex_AsSsize_t' [-Wunused-function]
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
                                ^
pyserver.c:2294:33: warning: unused function '__Pyx_PyInt_FromSize_t' [-Wunused-function]
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
                                ^
pyserver.c:1988:32: warning: unused function '__Pyx_PyInt_From_long' [-Wunused-function]
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
                               ^
pyserver.c:2014:27: warning: function '__Pyx_PyInt_As_long' is not needed and will not be emitted [-Wunneeded-internal-declaration]
static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
                          ^
7 warnings generated.
pyserver.c:2157:28: warning: unused function '__Pyx_PyObject_AsString' [-Wunused-function]
static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) {
                           ^
pyserver.c:2154:32: warning: unused function '__Pyx_PyUnicode_FromString' [-Wunused-function]
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {
                               ^
pyserver.c:298:29: warning: unused function '__Pyx_Py_UNICODE_strlen' [-Wunused-function]
static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u)
                            ^
pyserver.c:2269:33: warning: unused function '__Pyx_PyIndex_AsSsize_t' [-Wunused-function]
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
                                ^
pyserver.c:2294:33: warning: unused function '__Pyx_PyInt_FromSize_t' [-Wunused-function]
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
                                ^
pyserver.c:1988:32: warning: unused function '__Pyx_PyInt_From_long' [-Wunused-function]
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
                               ^
pyserver.c:2014:27: warning: function '__Pyx_PyInt_As_long' is not needed and will not be emitted [-Wunneeded-internal-declaration]
static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
                          ^
7 warnings generated.
gcc -g -O2 -shared -o pyserver.so server.o pyserver.o -levent
Undefined symbols for architecture x86_64:
  "_PyCFunction_NewEx", referenced from:
      _initpyserver in pyserver.o
  "_PyCFunction_Type", referenced from:
      ___pyx_pw_8pyserver_1pyinit_server in pyserver.o
      ___Pyx_PyObject_CallOneArg in pyserver.o
  "_PyCode_New", referenced from:
      _initpyserver in pyserver.o
      ___Pyx_AddTraceback in pyserver.o
  "_PyDict_GetItem", referenced from:
      ___pyx_pw_8pyserver_1pyinit_server in pyserver.o
      ___pyx_f_8pyserver_pyconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pydisconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pyread_callback in pyserver.o
  "_PyDict_New", referenced from:
      _initpyserver in pyserver.o
      ___pyx_f_8pyserver_pydisconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pyread_callback in pyserver.o
  "_PyDict_SetItem", referenced from:
      _initpyserver in pyserver.o
      ___pyx_pw_8pyserver_1pyinit_server in pyserver.o
      ___pyx_f_8pyserver_pydisconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pyread_callback in pyserver.o
  "_PyErr_ExceptionMatches", referenced from:
      _initpyserver in pyserver.o
  "_PyErr_Format", referenced from:
      _initpyserver in pyserver.o
      ___pyx_pw_8pyserver_1pyinit_server in pyserver.o
      ___pyx_f_8pyserver_pyconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pydisconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pyread_callback in pyserver.o
      ___Pyx_PyInt_As_int in pyserver.o
  "_PyErr_Occurred", referenced from:
      _initpyserver in pyserver.o
      ___pyx_pw_8pyserver_1pyinit_server in pyserver.o
      ___Pyx_PyObject_CallOneArg in pyserver.o
      ___pyx_f_8pyserver_pyconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pydisconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pyread_callback in pyserver.o
      ___Pyx_PyInt_As_int in pyserver.o
      ...
  "_PyErr_SetString", referenced from:
      _initpyserver in pyserver.o
      ___pyx_pw_8pyserver_1pyinit_server in pyserver.o
      ___Pyx_PyObject_CallOneArg in pyserver.o
      ___pyx_f_8pyserver_pyconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pydisconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pyread_callback in pyserver.o
      ___Pyx_PyInt_As_int in pyserver.o
      ...
  "_PyErr_WarnEx", referenced from:
      _initpyserver in pyserver.o
  "_PyErr_WriteUnraisable", referenced from:
      ___Pyx_WriteUnraisable in pyserver.o
  "_PyExc_AttributeError", referenced from:
      _initpyserver in pyserver.o
  "_PyExc_ImportError", referenced from:
      _initpyserver in pyserver.o
  "_PyExc_NameError", referenced from:
      ___pyx_pw_8pyserver_1pyinit_server in pyserver.o
      ___pyx_f_8pyserver_pyconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pydisconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pyread_callback in pyserver.o
  "_PyExc_OverflowError", referenced from:
      ___Pyx_PyInt_As_int in pyserver.o
  "_PyExc_RuntimeError", referenced from:
      ___Pyx_PrintOne in pyserver.o
  "_PyExc_SystemError", referenced from:
      ___pyx_pw_8pyserver_1pyinit_server in pyserver.o
      ___Pyx_PyObject_CallOneArg in pyserver.o
      ___pyx_f_8pyserver_pyconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pydisconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pyread_callback in pyserver.o
  "_PyExc_TypeError", referenced from:
      ___Pyx_PyInt_As_int in pyserver.o
  "_PyFile_SoftSpace", referenced from:
      ___Pyx_PrintOne in pyserver.o
  "_PyFile_WriteObject", referenced from:
      ___Pyx_PrintOne in pyserver.o
  "_PyFile_WriteString", referenced from:
      ___Pyx_PrintOne in pyserver.o
  "_PyFrame_New", referenced from:
      ___Pyx_AddTraceback in pyserver.o
  "_PyImport_AddModule", referenced from:
      _initpyserver in pyserver.o
  "_PyInt_FromLong", referenced from:
      _initpyserver in pyserver.o
  "_PyList_New", referenced from:
      _initpyserver in pyserver.o
  "_PyLong_AsLong", referenced from:
      ___Pyx_PyInt_As_int in pyserver.o
  "_PyMem_Malloc", referenced from:
      ___Pyx_AddTraceback in pyserver.o
  "_PyMem_Realloc", referenced from:
      ___Pyx_AddTraceback in pyserver.o
  "_PyMethod_Type", referenced from:
      ___pyx_pw_8pyserver_1pyinit_server in pyserver.o
      ___pyx_f_8pyserver_pyconnect_callback in pyserver.o
  "_PyModule_GetDict", referenced from:
      _initpyserver in pyserver.o
  "_PyNumber_Int", referenced from:
      ___Pyx_PyInt_As_int in pyserver.o
  "_PyNumber_Long", referenced from:
      ___Pyx_PyInt_As_int in pyserver.o
  "_PyOS_snprintf", referenced from:
      _initpyserver in pyserver.o
  "_PyObject_Call", referenced from:
      ___pyx_pw_8pyserver_1pyinit_server in pyserver.o
      ___Pyx_PyObject_CallOneArg in pyserver.o
      ___pyx_f_8pyserver_pyconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pydisconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pyread_callback in pyserver.o
  "_PyObject_CallFunctionObjArgs", referenced from:
      _initpyserver in pyserver.o
  "_PyObject_GetAttr", referenced from:
      _initpyserver in pyserver.o
      ___pyx_pw_8pyserver_1pyinit_server in pyserver.o
      ___pyx_f_8pyserver_pyconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pydisconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pyread_callback in pyserver.o
  "_PyObject_IsTrue", referenced from:
      ___pyx_f_8pyserver_pyconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pydisconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pyread_callback in pyserver.o
  "_PyObject_SetAttrString", referenced from:
      _initpyserver in pyserver.o
  "_PyString_FromFormat", referenced from:
      ___Pyx_AddTraceback in pyserver.o
  "_PyString_FromString", referenced from:
      ___Pyx_AddTraceback in pyserver.o
      ___pyx_f_8pyserver_pyconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pydisconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pyread_callback in pyserver.o
      ___Pyx_WriteUnraisable in pyserver.o
  "_PyString_FromStringAndSize", referenced from:
      _initpyserver in pyserver.o
  "_PyString_InternFromString", referenced from:
      _initpyserver in pyserver.o
  "_PySys_GetObject", referenced from:
      ___Pyx_PrintOne in pyserver.o
  "_PyTraceBack_Here", referenced from:
      ___Pyx_AddTraceback in pyserver.o
  "_PyTuple_New", referenced from:
      _initpyserver in pyserver.o
      ___Pyx_PyObject_CallOneArg in pyserver.o
      ___pyx_f_8pyserver_pyconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pydisconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pyread_callback in pyserver.o
  "_PyTuple_Pack", referenced from:
      _initpyserver in pyserver.o
  "_PyUnicodeUCS2_DecodeUTF8", referenced from:
      _initpyserver in pyserver.o
  "_Py_GetVersion", referenced from:
      _initpyserver in pyserver.o
  "_Py_InitModule4_64", referenced from:
      _initpyserver in pyserver.o
  "__PyThreadState_Current", referenced from:
      ___Pyx_AddTraceback in pyserver.o
      ___pyx_pw_8pyserver_1pyinit_server in pyserver.o
      ___Pyx_PyObject_CallOneArg in pyserver.o
      ___pyx_f_8pyserver_pyconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pydisconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pyread_callback in pyserver.o
      ___Pyx_WriteUnraisable in pyserver.o
      ...
  "__Py_CheckRecursionLimit", referenced from:
      ___pyx_pw_8pyserver_1pyinit_server in pyserver.o
      ___Pyx_PyObject_CallOneArg in pyserver.o
      ___pyx_f_8pyserver_pyconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pydisconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pyread_callback in pyserver.o
  "__Py_CheckRecursiveCall", referenced from:
      ___pyx_pw_8pyserver_1pyinit_server in pyserver.o
      ___Pyx_PyObject_CallOneArg in pyserver.o
      ___pyx_f_8pyserver_pyconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pydisconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pyread_callback in pyserver.o
  "__Py_NoneStruct", referenced from:
      _initpyserver in pyserver.o
      ___pyx_pw_8pyserver_1pyinit_server in pyserver.o
      ___pyx_f_8pyserver_pyconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pydisconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pyread_callback in pyserver.o
      ___Pyx_WriteUnraisable in pyserver.o
  "__Py_TrueStruct", referenced from:
      ___pyx_f_8pyserver_pyconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pydisconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pyread_callback in pyserver.o
  "__Py_ZeroStruct", referenced from:
      ___pyx_f_8pyserver_pyconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pydisconnect_callback in pyserver.o
      ___pyx_f_8pyserver_pyread_callback in pyserver.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: *** [all] Error 1

akaRem avatar Nov 02 '14 10:11 akaRem

I'm really sorry this happened, i think i know what the problem is. I will update this issue in the morning.

philberty avatar Nov 02 '14 17:11 philberty