2017-01-27 17 views
1

У меня есть crosstool-ng toolchain для i686-linux-unknown-gnu, эта toolchain содержит другой glibc, чем тот, который установлен на моем хосте.Как я могу связать программу Rust с другим glibc?

Путь к моей libc.so.6 является:

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

Как я могу сказать, Грузовые ссылки на Glibc, расположенный в этом каталоге вместо одной системы?

Я уже пробовал LD_LIBRARY_PATH, но он не работает.

Что работает, чтобы установить в моем .cargo/config этого файла:

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

Но что связывает свою программу с GCC набором инструментов вместо Clang. Я хочу использовать Clang и просто ссылаться на другой glibc.

+1

Вы пробовали изменения '' rustflags' в .cargo/config'? – kennytm

+0

Возможно, вы захотите перекрестно разместить вопрос на/r/rust (Reddit), там есть несколько пользователей, которые выполняют кросс-компиляцию, в которой требуется сбор другого libc, поэтому они, вероятно, хорошо понимают, как это сделать лучше всего , –

ответ

2

Как kennytm отметил, что я могу использовать .cargo/config сказать, где находится новый glibc с помощью параметра sysroot:

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

Параметр --sysroot будет содержать путь к моему SYSROOT, где лежит обычай glibc.

Я до сих пор думаю, что это не самый практичный способ сделать это, но я не знаю, лучший способ ..