Im Allgemeinen unterstützen UNIX-Systeme die Rückwärts-Binärkompatibilität (eine Binärdatei, die auf einem alten Computer erstellt wurde, läuft weiterhin auf einem neueren), aber nicht umgekehrt. Sie können nicht erwarten, dass eine auf einem neuen System erstellte Binärdatei auf einem älteren läuft. STT_GNU_IFUNC
ist nur die erste von vielen Problemen, denen Sie begegnen werden.
Wenn Sie eine Binärdatei auf einer neueren Maschine erstellen müssen, die auf einer älteren läuft, lesen Sie dieses Dokument.
Früher gab es "apgcc:Ein GCC-Wrapper zum Erstellen portabler Binärdateien", der dies einfach machte (es wird von oben referenziert), aber es scheint weg zu sein;-(
Die einfachste Option ist, auf einem alten Rechner zu bauen (ich habe früher auf RedHat 6.2 gebaut, und die resultierende Binärdatei lief überall ). Sie müssen RH-6.2 nicht wirklich auf einem physischen Computer ausführen, sondern bringen es einfach in einer VM hoch.
Die andere relativ einfache Möglichkeit besteht darin, chroot
einzubauen , wieder unter Verwendung von Tools und Bibliotheken einer alten Distribution (z. B. RH-6.2).
Da APGCC nicht mehr verfügbar zu sein scheint (außer vielleicht hier und hier). Diese Glibc-Header scheinen derzeit der bequemste Weg zu sein, portable Linux-Binärdateien aus einem C-Code zu generieren, indem eine der älteren Header-Dateien eingebunden wird.