diff --git a/src/env.rs b/src/env.rs
index 7c71b7b6310c29d5d088c1f26ccd174373140e3f..6bdbe343be5c913c7e8dda2c71fd0441eb6f487c 100644
--- a/src/env.rs
+++ b/src/env.rs
@@ -1,6 +1,6 @@
 use std::{env, ffi, io, process};
 
-use crate::{status_error, target, toolchain};
+use crate::{gnu_target, status_error, target, toolchain};
 
 pub fn command<S: AsRef<ffi::OsStr>>(program: S) -> io::Result<process::Command> {
     let toolchain_dir = toolchain()?;
@@ -15,9 +15,9 @@ pub fn command<S: AsRef<ffi::OsStr>>(program: S) -> io::Result<process::Command>
         env::set_var("PATH", new_path);
     }
 
-    let ar = format!("{}-ar", target());
-    let cc = format!("{}-gcc", target());
-    let cxx = format!("{}-g++", target());
+    let ar = format!("{}-ar", gnu_target());
+    let cc = format!("{}-gcc", gnu_target());
+    let cxx = format!("{}-g++", gnu_target());
     let cc_target_var = target().replace("-", "_");
     let cargo_target_var = cc_target_var.to_uppercase();
 
@@ -28,6 +28,7 @@ pub fn command<S: AsRef<ffi::OsStr>>(program: S) -> io::Result<process::Command>
     command.env(format!("CXX_{}", cc_target_var), &cxx);
     command.env("RUSTUP_TOOLCHAIN", &toolchain_dir);
     command.env("TARGET", target());
+    command.env("GNU_TARGET", gnu_target());
 
     Ok(command)
 }
diff --git a/src/lib.rs b/src/lib.rs
index 27beafbd79b6540fdb9bc180fe89a8cc409d5547..90dafff92f1ed97bb8866ef66b34ea03ecc6b8cd 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -12,6 +12,7 @@ const SUPPORTED_TARGETS: &'static [&'static str] = &[
     "x86_64-unknown-redox",
     "aarch64-unknown-redox",
     "i686-unknown-redox",
+    "riscv64gc-unknown-redox",
 ];
 
 fn installed(program: &str) -> io::Result<bool> {
@@ -71,6 +72,15 @@ pub fn target() -> &'static str {
     SUPPORTED_TARGETS[index]
 }
 
+pub fn gnu_target() -> &'static str {
+    let rust_target = target();
+    if rust_target == "riscv64gc-unknown-redox" {
+        "riscv64-unknown-redox"
+    } else {
+        rust_target
+    }
+}
+
 pub fn main(args: &[String]) {
     match args.get(1) {
         Some(arg) => match arg.as_str() {