This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Link to the old symbol version in the .so file

I using Arm cross gcc, I need to link a newer version of a library (glibc 2.4) but the executable needs to run on a system with an older version (2.31).
The GNU toolchain version is Cortex-A "gcc-arm-10.2-2020.11-mingw-w64-i686-arm-none-linux-gnueabihf", ELF found out some incompatible symbols as memcpy (needing memcpy@GLIBC_2.4 but the library providing memcpy@GLIBC_2.31)emset(........)

ELF message as below:
Symbol table '.dynsym' contains 8 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 00000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.4 (2)
2: 00000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.4 (2)
3: 00000000 0 FUNC GLOBAL DEFAULT UND sprintf@GLIBC_2.4 (2)
4: 00000000 0 FUNC GLOBAL DEFAULT UND sqrt@GLIBC_2.4 (3)
5: 00000000 0 FUNC GLOBAL DEFAULT UND printf@GLIBC_2.4 (2)
6: 00000000 0 FUNC GLOBAL DEFAULT UND memcmp@GLIBC_2.4 (2)
7: 00000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.4 (2)

How to solve the above glibc incompatibility problem?
Kindly provide your comments !!

Regards,
Daniel Hsu