I upgraded my Linux distro from Pop OS 19.10 to 20.04, and it naturally included upgrades to glibc & co. Since then, I started getting linker errors for libm symbols like __pow_finite
.
Unfortunately, the code that references these symbols is a static library (libWithPowFiniteRef.a in the redacted snippet below) with third-party proprietary code. I don't have access to source.
I checked /lib/x86_64-linux-gnu/libm.so.6
using nm
. The symbol is there:
nm -gD /lib/x86_64-linux-gnu/libm.so.6...0000000000010e00 W powf64x00000000000471f0 i __powf_finite000000000002ed90 i __pow_finite0000000000010e00 W powl0000000000019860 T __powl_finite...
So I can't explain the errors:
g++ -o ./media_tests -Wl,--verbose -Wl,--start-group @"./media_tests.rsp" -ldl -lpthread -lrt ../../third_party/other.so ../../third_party/redacted/lib/Linux/x64/libWithPowFiniteRef.a -Wl,--end-group...attempt to open /usr/lib/gcc/x86_64-linux-gnu/9/libm.so failedattempt to open /usr/lib/gcc/x86_64-linux-gnu/9/libm.a failedattempt to open /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libm.so succeeded...attempt to open /usr/lib/gcc/x86_64-linux-gnu/9/libm.so failedattempt to open /usr/lib/gcc/x86_64-linux-gnu/9/libm.a failedattempt to open /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libm.so succeededopened script file /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libm.so/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libm.soopened script file /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libm.soattempt to open /lib/x86_64-linux-gnu/libm.so.6 succeeded/lib/x86_64-linux-gnu/libm.so.6.../usr/bin/ld:../../third_party/redacted/lib/Linux/x64/redacted.a(redacted.o): in function `RedactedX':redacted1.c:(.text+0xbb0): undefined reference to `__pow_finite'/usr/bin/ld: ../../third_party/redacted/lib/Linux/x64/redacted.a(redacted.o): in function `RedactedY':redacted2.c:(.text+0x7ad9): undefined reference to `__pow_finite'/usr/bin/ld: redacted.c:(.text+0x8c74): undefined reference to `__pow_finite'/usr/bin/ld: link errors found, deleting executable `./media_tests'
Maybe we the solution is to request a new static lib from the vendor, but I would like to understand why.