2017-01-27 2 views
1

Ich habe eine crosstool-ng Toolchain für i686-linux-unknown-gnu, diese Toolchain enthält eine andere glibc als die, die in meinem Host installiert ist.Wie kann ich mein Rust-Programm mit einem anderen glibc verknüpfen?

Der Weg zu meinem libc.so.6 ist:

~/x-tools/i686-unknown-linux-gnu/i686-unknown-linux-gnu/sysroot/lib 

Wie kann ich sagen, Fracht auf die glibc in diesem Verzeichnis ein anstelle des Systems angeordnet zu verknüpfen?

Ich habe bereits versucht LD_LIBRARY_PATH, aber es funktioniert nicht.

Was funktioniert, ist in meiner .cargo/config Datei setzen diese:

[target.i686-unknown-linux-gnu] 
linker = "i686-unknown-linux-gnu-gcc" 

Aber das verbindet mein Programm mit der GCC-Toolchain statt Clang. Ich möchte Clang verwenden und nur gegen eine andere glibc verlinken.

+1

Haben Sie versucht, in die '' rustflags' Wechsel .cargo/config'? – kennytm

+0

Vielleicht möchten Sie die Frage auf/r/rost (Reddit) überkreuzen, da gibt es mehrere Benutzer, die Cross-Compilation machen, in denen das Aufnehmen einer anderen libc obligatorisch ist, so dass sie wahrscheinlich gut verstehen, wie es am besten geht . –

Antwort

2

Wie kennytm wies darauf hin, kann ich .cargo/config sagen verwenden, wo mit Hilfe des sysroot Parameter der neuen glibc ist:

[target.i686-unknown-linux-gnu] 
rustflags = ["-C", "link-args=--sysroot=/home/ebarreto/x-tools/i686-unknown-linux-gnu/i686-unknown-linux-gnu/sysroot"] 

Der --sysroot Parameter wird den Weg zu meinem sysroot enthalten, wo die benutzerdefinierte glibc liegt.

Ich denke immer noch, das ist nicht der praktischste Weg, das zu tun, aber ich weiß nicht, einen besseren Weg ..

Verwandte Themen