Skip to content

Missing libm linkage for md__mypyc causes undefined symbol errors #692

@BwL1289

Description

@BwL1289

The mypyc-compiled extension modules fail to load on some systems due to missing linkage against the math library (libm). This causes undefined symbol errors for mathematical functions like sin, cos, tan, sqrt, exp, fmod, pow, and log.

bash[./lib/python3.12/site-packages/charset_normalizer/md__mypyc.cpython-312-aarch64-linux-gnu.so]:
    linux-vdso.so.1 (0x0000ffff9aa03000)
    libc.so.6 => /lib64/libc.so.6 (0x0000ffff9a77c000)
    /lib/ld-linux-aarch64.so.1 (0x0000ffff9a9b6000)
undefined symbol: sin	(./lib/python3.12/site-packages/charset_normalizer/md__mypyc.cpython-312-aarch64-linux-gnu.so)
undefined symbol: cos	(./lib/python3.12/site-packages/charset_normalizer/md__mypyc.cpython-312-aarch64-linux-gnu.so)
undefined symbol: tan	(./lib/python3.12/site-packages/charset_normalizer/md__mypyc.cpython-312-aarch64-linux-gnu.so)
undefined symbol: sqrt	(./lib/python3.12/site-packages/charset_normalizer/md__mypyc.cpython-312-aarch64-linux-gnu.so)
undefined symbol: exp	(./lib/python3.12/site-packages/charset_normalizer/md__mypyc.cpython-312-aarch64-linux-gnu.so)
undefined symbol: fmod	(./lib/python3.12/site-packages/charset_normalizer/md__mypyc.cpython-312-aarch64-linux-gnu.so)
undefined symbol: pow	(./lib/python3.12/site-packages/charset_normalizer/md__mypyc.cpython-312-aarch64-linux-gnu.so)
undefined symbol: log	(./lib/python3.12/site-packages/charset_normalizer/md__mypyc.cpython-312-aarch64-linux-gnu.so)

Workaround is to use a sed patch to explicitly link the math library to all mypyc modules:

sed -i '/^    )$/a\
    for ext in MYPYC_MODULES:\
        if "m" not in ext.libraries:\
            ext.libraries.append("m")
' "./setup.py"

Environment

Platform: aarch64-linux-gnu
Python version: 3.12
Architecture: ARM64
Commit: ba0a7e3

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinghelp wantedExtra attention is needed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions