So deaktivieren Sie Testprogramme beim Cross-Compilieren von glib

7

Ich habe die folgenden Fehler beim Versuch, glib mit den folgenden Konfigurationsparametern zu kompilieren:

./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 abgeschlossen werden kann?

emddev
quelle
Ich vermute, es ./configure --helpkönnte helfen.
schaiba
Nein, dies ist nicht der Fall, da der Deaktivierungstest nicht als eine der Optionen aufgeführt ist.
Thebunnyrules

Antworten:

1

In dieser Situation wird standardmäßig eine Autoconf-Site-Standarddatei verwendet, die die entsprechenden Werte für die Tests enthält, configuredie ausgeführt werden sollen.

In diesem speziellen Fall configurewird versucht festzustellen, 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 gegenseitig kompilieren, auf Ihrer Zielplattform ausführen und den Exit-Code ( echo $?) untersuchen. Erstellen Sie beispielsweise eine Site-Standarddatei für Ihre Zielarchitektur config.arm-hisiv400-linuxund fügen Sie eine Zeile mit hinzu

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 dann configuremit CONFIG_SITEHinweis auf den vollständigen Pfad der Site Standarddatei , 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 auf den nächsten Test fehlschlagen , die ein Programm für das Ziel kompiliert ausgeführt werden muss, aber Sie können das in der gleichen Art und Weise zu beheben, mehrere Einträge auf der Website Standarddatei (solange das Hinzufügen configure.acAnwendungen AC_CACHE_VALum AC_TRY_RUN).

Stephen Kitt
quelle