Как я могу установить компоновщик, только если это необходимо для кросс-компиляции? - PullRequest
2 голосов
/ 07 апреля 2020

Согласно различным руководствам по кросс-компиляции Rust, мне нужно установить что-то вроде этого в .cargo/config:

[target.x86_64-unknown-linux-musl]
linker = "x86_64-linux-musl-gcc"

В моем случае я кросс-компилирую для Linux на Ma c. Это хорошо, но я также хотел бы иметь возможность собирать код изначально на Linux (т.е. не кросс-компиляции). В этом случае, конечно, цель все еще x86_64-unknown-linux-musl, но я не хочу переопределять linker тогда.

Я думаю, я, вероятно, могу сделать это, используя пользовательский build.rs, но есть ли способ сделать это с .cargo/config? Я думал, что вы сможете сделать что-то вроде этого:

[target.'cfg(all(host_os = "macos", target_os = "linux"))']
linker = "x86_64-linux-musl-gcc"

Но нет host_os.

1 Ответ

0 голосов
/ 07 апреля 2020

Я предполагаю, что вы поместили .cargo/config в рабочее пространство вашего автомобиля go?

Если это так, вам следует рассмотреть возможность изменения параметров конфигурации c, заданных хостом (таких как target.{target}.linker) вместо вашего пользовательского c ~/.cargo/config. Таким образом, компоновщик привязан не к конфигурации рабочей области, а к пользователю: разные пользователи на разных хостах могут иметь разные компоновщики, настроенные для разных целей.

...