Your message dated Sun, 24 Dec 2023 13:23:47 -0400
with message-id 
<7ktac4vmwnrgscup4ypvzjhog42vz7piertjyw7mhqcr4oakwu@sg4e4dsojhhu>
and subject line Re: Bug#941004: cython3: gcc/ld return "undefined reference" 
compiling cpp generated with cython3
has caused the Debian Bug report #941004,
regarding cython3: gcc/ld return "undefined reference" compiling cpp generated 
with cython3
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
941004: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=941004
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: cython3
Version: 0.29.2-2
Severity: important

Dear maintainer,
I recently discovered that compiling a python3 source with cython +
gcc fails by returning errors of the "undefined reference" type,
relative to the linker that does not seem to be able to find
references within the python library.
For example:

# -- created simple program --
$ cat testfile.py
#!/usr/bin/env python3
print("TEST")

# -- test from interpreter (version 3.7.4+) --
$ python3.7 testfile.py
TEST

# -- source creation with cython (version 0.29.2) --
$ cython3 -3 --embed --cplus testfile.py -o testfile.cpp

# -- check cpp file creation --
$ ls -ll a.*
-rw-r--r-- 1 root root   104184 set 23 11:51 testfile.cpp
-rwxr-xr-x 1 root shared     38 set 23 11:50 testfile.py

# -- compilation --
$ g++ -fno-pie -no-pie -O3 -I /usr/include/python3.7 -L
/usr/lib/python3.7/config-3.7m-x86_64-linux-gnu -l python3.7
testfile.cpp -o a


# -- errors returned --

/usr/bin/ld: /tmp/user/0/ccJik3VR.o: in function
`__Pyx_copy_spec_to_module(_object*, _object*, char const*, char const*, int)':
testfile.cpp:(.text.unlikely+0x7a): undefined reference to
`PyObject_GetAttrString'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x88): undefined reference
to `_Py_NoneStruct'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xa0): undefined reference
to `PyDict_SetItemString'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xbc): undefined reference
to `PyExc_AttributeError'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xc5): undefined reference
to `PyErr_ExceptionMatches'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xce): undefined reference
to `PyErr_Clear'
/usr/bin/ld: /tmp/user/0/ccJik3VR.o: in function
`__pyx_pymod_create(_object*, PyModuleDef*)':
testfile.cpp:(.text.unlikely+0xed): undefined reference to
`PyThreadState_Get' /usr/bin/ld: testfile.cpp:(.text.unlikely+0xf6):
undefined reference to `PyInterpreterState_GetID'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x11d): undefined reference
to `PyExc_ImportError'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x127): undefined reference
to `PyErr_SetString'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x151): undefined reference
to `PyObject_GetAttrString'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x161): undefined reference
to `PyModule_NewObject'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x182): undefined reference
to `PyModule_GetDict'
/usr/bin/ld: /tmp/user/0/ccJik3VR.o: in function `__pyx_pymod_exec_a(_object*)':
testfile.cpp:(.text.unlikely+0x25a): undefined reference to `PyExc_RuntimeError'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x264): undefined reference
to `PyErr_SetString'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x28d): undefined reference
to `PyOS_snprintf'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x292): undefined reference
to `Py_GetVersion'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x2ab): undefined reference
to `PyOS_snprintf'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x2e5): undefined reference
to `PyOS_snprintf'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x2f6): undefined reference
to `PyErr_WarnEx'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x325): undefined reference
to `PyTuple_New'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x361): undefined reference
to `PyBytes_FromStringAndSize'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x39d): undefined reference
to `PyUnicode_FromStringAndSize'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x3d9): undefined reference
to `PyModule_GetDict'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x416): undefined reference
to `PyImport_AddModule'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x450): undefined reference
to `PyImport_AddModule'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x498): undefined reference
to `PyObject_SetAttrString'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x4e4): undefined reference
to `PyUnicode_InternFromString'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x502): undefined reference
to `PyUnicode_Decode'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x50d): undefined reference
to `PyUnicode_FromStringAndSize'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x520): undefined reference
to `PyBytes_FromStringAndSize'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x538): undefined reference
to `PyObject_Hash'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x571): undefined reference
to `PyObject_SetAttr'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x5cd): undefined reference
to `_PyThreadState_UncheckedGet'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x616): undefined reference
to `_PyObject_GetDictPtr'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x64e): undefined reference
to `_PyDict_GetItem_KnownHash'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x692): undefined reference
to `PyObject_Not'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x69d): undefined reference
to `_Py_FalseStruct'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x6a4): undefined reference
to `_Py_TrueStruct'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x6be): undefined reference
to `PyErr_Clear'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x6d8): undefined reference
to `_Py_FalseStruct'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x6e0): undefined reference
to `PyObject_SetAttr'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x6e9): undefined reference
to `_Py_FalseStruct'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x6f7): undefined reference
to `_Py_TrueStruct'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x701): undefined reference
to `PyObject_Not'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x7c1): undefined reference
to `PyUnicode_FromString'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x7eb): undefined reference
to `PyUnicode_FromFormat'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x7fa): undefined reference
to `PyUnicode_FromString'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x831): undefined reference
to `PyCode_New'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x887): undefined reference
to `PyMem_Malloc'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x90f): undefined reference
to `PyMem_Realloc'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x977): undefined reference
to `PyFrame_New'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x98a): undefined reference
to `PyTraceBack_Here'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x9c5): undefined reference
to `PyErr_Occurred'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x9d1): undefined reference
to `PyExc_ImportError'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0x9db): undefined reference
to `PyErr_SetString'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xa40): undefined reference
to `PyImport_GetModuleDict'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xa79): undefined reference
to `PyDict_GetItemString'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xa92): undefined reference
to `PyDict_SetItemString'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xadf): undefined reference
to `PyExc_NameError'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xaee): undefined reference
to `PyErr_Format'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xb31): undefined reference
to `PyTuple_Pack'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xb89): undefined reference
to `PyObject_Call'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xb9f): undefined reference
to `PyThreadState_Get'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xbab): undefined reference
to `_Py_CheckRecursionLimit'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xbc2): undefined reference
to `PyThreadState_Get'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xbd1): undefined reference
to `_Py_CheckRecursionLimit'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xbed): undefined reference
to `_Py_CheckRecursiveCall'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xbfc): undefined reference
to `PyThreadState_Get'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xc0a): undefined reference
to `PyErr_Occurred'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xc16): undefined reference
to `PyExc_SystemError'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xc20): undefined reference
to `PyErr_SetString'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xc59): undefined reference
to `PyDict_New'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xc9b): undefined reference
to `PyDict_SetItem'
/usr/bin/ld: /tmp/user/0/ccJik3VR.o: in function `__Pyx_main(int,
wchar_t**) [clone .part.0]':
testfile.cpp:(.text.unlikely+0xd37): undefined reference to `PyModule_Type'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xd3e): undefined reference
to `PyModule_Type'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xd43): undefined reference
to `PyType_IsSubtype'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xd51): undefined reference
to `PyUnicode_FromString'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xd61): undefined reference
to `PyModule_NewObject'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xd88): undefined reference
to `PyModule_ExecDef'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xd91): undefined reference
to `PyErr_Occurred'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xd9b): undefined reference
to `PyErr_Print'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xdbc): undefined reference
to `Py_Finalize'
/usr/bin/ld: /tmp/user/0/ccJik3VR.o: in function `main.cold':
testfile.cpp:(.text.unlikely+0xdd0): undefined reference to `Py_SetProgramName'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xdd5): undefined reference
to `Py_Initialize'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xde1): undefined reference
to `PySys_SetArgv'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xdf4): undefined reference
to `Py_Initialize'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xe29): undefined reference
to `Py_SetProgramName'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xe2e): undefined reference
to `Py_Initialize'
/usr/bin/ld: testfile.cpp:(.text.unlikely+0xe3a): undefined reference
to `PySys_SetArgv'
/usr/bin/ld: /tmp/user/0/ccJik3VR.o: in function
`__Pyx_PyObject_GetAttrStr(_object*, _object*)':
testfile.cpp:(.text.unlikely+0x61): undefined reference to `PyObject_GetAttr'
/usr/bin/ld: /tmp/user/0/ccJik3VR.o: in function `PyInit_a':
testfile.cpp:(.text.unlikely+0xd16): undefined reference to `PyModuleDef_Init'
collect2: error: ld returned 1 exit status


-- but the library exists and contains references indicated as
missing, for example:


/tmp$ objdump -T /usr/lib/x86_64-linux-gnu/libpython3.7m.so|grep
"PyUnicode_FromFormat"
00000000001f7990 g    DF .text  0000000000000091  Base PyUnicode_FromFormat
00000000001f6c60 g    DF .text  0000000000000d2c  Base PyUnicode_FromFormatV


-- why does this procedure no longer work?

Thanks,
Antonio



--  Other details:

$ ls -ll /usr/include/python3.7* -d
drwxr-xr-x 2 root root  4096 lug 15 12:38 /usr/include/python3.7dm
drwxr-xr-x 3 root root 16384 set  8 08:49 /usr/include/python3.7m
lrwxrwxrwx 1 root root    10 ott 21  2018 /usr/include/python3.7 -> python3.7m

$ ls -ll /usr/lib/python3.7/config-3.7m-x86_64-linux-gnu/libpython3.7* -d
-rw-r--r-- 1 root root 37815704 set  4 20:42
/usr/lib/python3.7/config-3.7m-x86_64-linux-gnu/libpython3.7m.a
-rw-r--r-- 1 root root 37207272 set  4 20:42
/usr/lib/python3.7/config-3.7m-x86_64-linux-gnu/libpython3.7m-pic.a
lrwxrwxrwx 1 root root       41 set  4 10:03
/usr/lib/python3.7/config-3.7m-x86_64-linux-gnu/libpython3.7m.so ->
../../x86_64-linux-gnu/libpython3.7m.so.1
lrwxrwxrwx 1 root root       41 set  4 10:03
/usr/lib/python3.7/config-3.7m-x86_64-linux-gnu/libpython3.7.so ->
../../x86_64-linux-gnu/libpython3.7m.so.1

$ ls -ll /usr/lib/x86_64-linux-gnu/libpython*
lrwxrwxrwx 1 root root      51 set  4 10:19 libpython2.7.a ->
../python2.7/config-x86_64-linux-gnu/libpython2.7.a
lrwxrwxrwx 1 root root      17 set  4 10:19 libpython2.7.so -> libpython2.7.so.1
lrwxrwxrwx 1 root root      19 set  4 10:19 libpython2.7.so.1 ->
libpython2.7.so.1.0
-rw-r--r-- 1 root root 3439088 set  4 20:42 libpython2.7.so.1.0
lrwxrwxrwx 1 root root      18 set  4 10:03 libpython3.7m.so ->
libpython3.7m.so.1
lrwxrwxrwx 1 root root      20 set  4 10:03 libpython3.7m.so.1 ->
libpython3.7m.so.1.0
-rw-r--r-- 1 root root 5018368 set  4 20:42 libpython3.7m.so.1.0



-- System Information:
Debian Release: bullseye/sid
  APT prefers unstable
  APT policy: (700, 'unstable'), (500, 'stable-updates'), (500,
'stable'), (100, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 5.3.1-custom (SMP w/8 CPU cores; PREEMPT)
Locale: LANG=it_IT, LC_CTYPE=it_IT (charmap=ISO-8859-1) (ignored:
LC_ALL set to it_IT), LANGUAGE=it (charmap=ISO-8859-1) (ignored:
LC_ALL set to it_IT)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages cython3 depends on:
ii  libc6    2.29-2
ii  python3  3.7.3-1

Versions of packages cython3 recommends:
ii  gcc          4:9.2.1-3.1
ii  python3-dev  3.7.3-1

Versions of packages cython3 suggests:
pn  cython-doc  <none>

-- debconf-show failed

--- End Message ---
--- Begin Message ---
Hi Antonio (2019.09.23_06:23:09_-0400)
> Dear maintainer,
> I recently discovered that compiling a python3 source with cython +
> gcc fails by returning errors of the "undefined reference" type,
> relative to the linker that does not seem to be able to find
> references within the python library.

Looks like ld --as-needed.

Specify the source file (testfile.cpp) before the libraries it needs to
link against.

Stefano

-- 
Stefano Rivera
  http://tumbleweed.org.za/
  +1 415 683 3272

--- End Message ---

Reply via email to