2017-01-27 1 views
1

J'ai une chaîne d'outils crosstool-ng pour i686-linux-unknown-gnu, cette chaîne d'outils contient une glibc différente de celle installée dans mon hôte.Comment rendre mon programme Rust lié à une autre glibc?

Le chemin vers mon libc.so.6 est:

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

Comment puis-je dire Cargo à créer un lien vers le glibc situé dans ce répertoire au lieu de celui du système? J'ai déjà essayé LD_LIBRARY_PATH, mais cela ne fonctionne pas.

Ce qui fonctionne est de mettre dans mon dossier .cargo/config ceci:

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

Mais qui relie mon programme avec le toolchain GCC au lieu de Clang. Je veux utiliser Clang et juste lier avec une autre glibc.

+1

Avez-vous essayé de changer le '' rustflags' dans .cargo/config'? – kennytm

+0

Vous voudrez peut-être poster la question sur/r/rust (Reddit), il y a plusieurs utilisateurs qui font une compilation croisée dans laquelle choisir une autre libc est obligatoire donc ils ont probablement une bonne compréhension de la meilleure façon de le faire . –

Répondre

2

Comme kennytm a souligné, je peux utiliser .cargo/config pour dire où est le nouveau glibc en utilisant le paramètre sysroot:

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

Le paramètre --sysroot contiendra le chemin de mon sysroot où se trouve la coutume glibc.

Je pense toujours que c'est pas le moyen le plus pratique de le faire, mais je ne sais pas une meilleure façon ..