Termux Üzerinde Rust Geliştirme ve `cargo run` Sorunu

Rust dilinde Android cihaz üzerinde Termux kullanarak proje geliştirmeye başladıysanız ve cargo run komutu sırasında izin hatası (permission error) aldıysanız, yalnız değilsiniz. Bu yazıda, sorunun nedenini ve pratik bir çözüm yolunu detaylı şekilde açıklıyorum.
🚫 Sorun: cargo run Komutu Çalışmıyor
Hata Özeti:
error: failed to run `rustc` to learn about target-specific information
Caused by: Permission denied (os error 13)
Bu hata genellikle şu durumlarda ortaya çıkar:
- Termux, Android dosya sisteminde sınırlı yetkiyle çalışır.
cargoderleyicisi (özelliklerustc) proje sırasında bazı dosyalarıtarget/dizinine yazmak ister.- Android, güvenlik nedeniyle bu dosya işlemlerini engeller.
Teknik Arka Plan
Rust’ın derleme sistemi, incremental compilation (artımlı derleme) yöntemini kullanır. Bu, daha hızlı derleme süresi sağlamak için proje derleme geçmişini target/ klasörüne önbellek olarak yazar.
Ancak, Android'in dosya izin politikaları nedeniyle bu işlemler engellenir. Özellikle root erişimi olmayan cihazlarda cargo bu geçici dosyaları yazamaz ve derleme başarısız olur.
✅ Çözüm: Incremental Compilation Özelliğini Kapatın
Bu özelliği devre dışı bırakarak, cargo önbellek oluşturmadan doğrudan derleme yapar. Bu da Android üzerinde dosya erişim problemi yaşanmadan çalışmasını sağlar.
Adımlar:
- Proje dizininde
.cargo/config.tomldosyasını oluşturun (veya mevcutsa düzenleyin).
[build]
incremental = false
- Ardından terminalden aşağıdaki komutları çalıştırın:
cargo clean
cargo check
- Artık
cargo runkomutunu tekrar deneyin:
cargo run
Her şey doğru şekilde ayarlandıysa bu sefer hata almadan projeniz başarıyla çalışacaktır.
🎯 Ek Tavsiyeler
.cargo/config.tomldosyası proje klasörünüzde yoksa elle oluşturabilirsiniz.- Alternatif olarak bu ayarı sistem geneline yaymak isterseniz:
~/.cargo/config.tomldizinine de aynı şekilde yazabilirsiniz.