Wenn Standalone-Curl zu segfault führt

9

Ich möchte eine eigenständige Version von 'curl ohne irgendeine Bibliotheksabhängigkeit (sogar libc) für ein eingebettetes System mit einer sehr alten libc-Version erstellen.

Aus dem aktuellen curl github konfiguriere ich die Kompilierung mit diesem Befehl:

%Vor%

Dann bekomme ich während der make -Phase die folgenden Warnungen:

%Vor%

Ich kann fortfahren und die make install ausführen, um die letzte Binärdatei zu erhalten.

Die Binärdatei hat keine Abhängigkeit:

%Vor%

Aber das Binärprogramm funktioniert überhaupt nicht:

%Vor%

Haben Sie eine Ahnung von dem Grundproblem?

EDIT 1: GDB-Ausgabe:

%Vor%

EDIT 2:

%Vor%

Vielleicht kommt das Problem von W :

  

W Das Symbol ist ein schwaches Symbol, das nicht speziell als markiert wurde   ein schwaches Objektsymbol. Wenn ein schwach definiertes Symbol mit a verknüpft ist   normal definiertes Symbol, das normal definierte Symbol wird mit Nein verwendet   Error. Wenn ein schwaches undefiniertes Symbol verknüpft ist und das Symbol nicht   definiert, wird der Wert des schwachen Symbols ohne Fehler Null.

EDIT 3: Wenn ich die SSL-Verknüpfung entferne, habe ich die gleiche Warnung für getpwuid erhalten, aber die Binärdatei funktioniert:

%Vor%

Aber ich muss SSL für die HTTPS-Unterstützung hinzufügen, damit das Problem weiterhin besteht.

EDIT 4: Das Problem ist direkt mit nss verknüpft. Eigenartiger Punkt ist, dass ./configure --prefix=/tmp/curl --disable-shared --enable-static-nss LDFLAGS='-static -static-libgcc -Wl,-Bstatic' LIBS='-ls' eine funktionierende eigenständige ausführbare Datei ohne SSL erzeugt. Die nss Probleme sind auf die SSL-Verknüpfung zurückzuführen.

    
Julio 25.08.2016, 21:52
quelle

1 Antwort

1

Ziehen Sie die Quellentwicklungsversion von openssl Ссылка und kompilieren Sie sie für die statische Verknüpfung neu (endet mit einem '.a' anstelle eines '.damit'). Dann rebuilt curl und verlinke mit der statischen openssl-Bibliothek, die du erstellt hast.

Sie wissen, dass libssl Ihnen Probleme bereitet, aber es ist vielleicht nicht die einzige Bibliothek. Wenn Sie die nächste Bibliothek finden, die Ihnen Probleme bereitet, tun Sie dasselbe für sie: ziehen Sie die Quellentwicklungsversion und erstellen Sie sie für die statische Verknüpfung neu.

    
Arie Jefferson 06.09.2016 14:44
quelle

Tags und Links