AresValley / Artemis

Radio Signals Recognition Manual
https://aresvalley.github.io/Artemis/
GNU General Public License v3.0
367 stars 41 forks source link

PyInstaller: ABI of GLIBC is backward compatible, but not forward compatible #8

Closed AresValley closed 5 years ago

AresValley commented 5 years ago

Caspian (Linux Mint 19.1) and Orrin (Ubuntu) report:

[5159] Error loading Python lib '/tmp/_MEIl5y7DW/libpython3.7m.so.1.0': dlopen: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by /tmp/_MEIl5y7DW/libpython3.7m.so.1.0)

This is due to the different version of C system libraries that may differ from compiler pc to the target one. PyInstaller suggests the following:

The executable that PyInstaller builds is not fully static, in that it still depends on the system libc. Under Linux, the ABI of GLIBC is backward compatible, but not forward compatible. So if you link against a newer GLIBC, you can't run the resulting executable on an older system. The supplied binary bootloader should work with older GLIBC. However, the libpython.so and other dynamic libraries still depend on the newer GLIBC. The solution is to compile the Python interpreter with its modules (and also probably bootloader) on the oldest system you have around so that it gets linked with the oldest version of GLIBC.

alessandro90 commented 5 years ago

From the next release (3.0.1) an older version of linux will be used as compilation environment. This should fix the problem.