So deaktivieren Sie Testprogramme beim Cross-Compilieren von Glib

So deaktivieren Sie Testprogramme beim Cross-Compilieren von Glib

Beim Versuch, glib mit den folgenden Konfigurationsparametern plattformübergreifend zu kompilieren, treten die folgenden Fehler auf:

./configure --prefix=$HOME --host=arm-hisiv400-linux

checking for growing stack pointer... configure: error: in `/home/aa/Hi3536_SDK_V2.0.4.0/glib-2.50.0':
configure: error: cannot run test program while cross compiling
See `config.log' for more details

Gibt es eine Möglichkeit, diese Tests zu deaktivieren, damit mein Cross-Compile-Prozess durchgeführt werden kann?

Antwort1

Die Standardpraxis in solchen Situationen ist die Verwendung einesAutoconf-Site-Standarddateienthält die entsprechenden Werte für die Tests, die configureausgeführt werden sollen.

In diesem speziellen Fallconfigureversucht zu bestimmen, in welche Richtung der Stapel wächst:

    volatile int *a = 0, *b = 0;
    void f (int i) { volatile int x = 5; if (i == 0) b = &x; else f (i - 1); }
    int main () { volatile int y = 7; a = &y; f (100); return b > a ? 0 : 1; }

Sie würden diesen Code also plattformübergreifend kompilieren, ihn auf Ihrer Zielplattform ausführen und seinen Exit-Code untersuchen ( echo $?). Erstellen Sie beispielsweise eine Site-Standarddatei für Ihre Zielarchitektur config.arm-hisiv400-linuxund fügen Sie eine Zeile mit

glib_cv_stack_grows=yes

(wenn der Exit-Code oben 0 war) oder

glib_cv_stack_grows=no

(wenn der Exit-Code 1 war).

Führen Sie es dann aus configure, indem CONFIG_SITESie auf den vollständigen Pfad der Site-Standarddatei verweisen, die Sie gerade erstellt haben:

CONFIG_SITE=/path/to/config.arm-hisiv400-linux ./configure --prefix=$HOME --host=arm-hisiv400-linux

configuresollte den Wert aus der Site-Standarddatei verwenden und den Test für den Stapel überspringen. Es wird wahrscheinlich beim nächsten Test fehlschlagen, der ein für das Ziel kompiliertes Programm ausführen muss, aber Sie können das auf die gleiche Weise beheben, indem Sie der Site-Standarddatei weitere Einträge hinzufügen (solange ungefähr configure.acverwendet wird ).AC_CACHE_VALAC_TRY_RUN

verwandte Informationen