diff --git a/src/lib.rs b/src/lib.rs
index dd8c2c8..150f76b 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -24,9 +24,9 @@
 use crate::device::{enable_networking, shell};
 use crate::package::make_package;
 use crate::sdk::{
-    cargo_path, clang_archiver_path, clang_c_compiler_path, clang_cpp_compiler_path,
-    clang_ranlib_path, clang_resource_dir, rustc_path, rustdoc_path, shared_libraries_path,
-    sysroot_path, target_out_dir, zircon_build_path,
+    cargo_path, clang_archiver_path, clang_c_compiler_path,
+    clang_cpp_compiler_path, clang_ranlib_path, clang_resource_dir, rustc_path, rustdoc_path,
+    shared_libraries_path, sysroot_path, target_out_dir,
 };
 use manifest::Manifest;
 
@@ -335,6 +335,20 @@
     format!("{}-fuchsia", triple_cpu)
 }
 
+pub fn get_vdso_path(target_options: &TargetOptions<'_, '_>) -> Result<PathBuf, Error> {
+    let vdso_name =
+        if target_options.config.fuchsia_arch == X64 { "user.vdso_x64" } else { "user.vdso_arm64" }
+            .to_string();
+    Ok(target_out_dir(target_options.config)?.join(vdso_name))
+}
+
+pub fn get_user_libc_path(target_options: &TargetOptions<'_, '_>) -> Result<PathBuf, Error> {
+    let libc_name =
+        if target_options.config.fuchsia_arch == X64 { "user.libc_x64" } else { "user.libc_arm64" }
+            .to_string();
+    Ok(target_out_dir(target_options.config)?.join(libc_name))
+}
+
 fn get_rustflags(
     run_cargo_options: &RunCargoOptions,
     target_options: &TargetOptions<'_, '_>,
@@ -365,7 +379,13 @@
             shared_lib_path.to_string_lossy(),
         ),
         format!("-Clink-arg=-L{}", clang_resource_lib.to_string_lossy()),
+        format!("-Clink-arg=-L{}", target_out_dir(target_options.config)?.to_string_lossy()),
+        format!("-Clink-arg=-L{}", get_vdso_path(target_options)?.to_string_lossy()),
         format!("-Clink-arg=--sysroot={}", sysroot_as_path.to_string_lossy()),
+        format!(
+            "-Clink-arg={}/obj/zircon/system/ulib/c/crt1.Scrt1.cc.o",
+            get_user_libc_path(target_options)?.to_string_lossy()
+        ),
         format!("-Lnative={}", shared_libraries_path(target_options)?.to_string_lossy()),
     ];
 
@@ -599,7 +619,6 @@
         .env("RUSTDOC", rustdoc_path()?.to_string_lossy().as_ref())
         .env("RUSTDOCFLAGS", &rustflags)
         .env("FUCHSIA_SHARED_ROOT", shared_libraries_path(target_options)?)
-        .env("ZIRCON_BUILD_ROOT", zircon_build_path(&target_options.config)?)
         .arg(subcommand)
         .args(target_args)
         .args(args);
diff --git a/src/package.rs b/src/package.rs
index 8ef2b19..46fbfd8 100644
--- a/src/package.rs
+++ b/src/package.rs
@@ -3,11 +3,11 @@
 // found in the LICENSE file.
 
 use crate::{
-    get_triple_cpu,
     sdk::{
-        amber_path, clang_base_path, cmc_path, fuchsia_dir, package_manager_path,
-        shared_libraries_path, zircon_build_path, FuchsiaConfig, TargetOptions,
+        amber_path, cmc_path, fuchsia_dir, package_manager_path, shared_libraries_path,
+        FuchsiaConfig, TargetOptions,
     },
+    target_out_dir,
     utils::{strip_binary, target_crate_path},
     RunCargoOptions,
 };
@@ -154,35 +154,22 @@
     if verbose {
         println!("write_manifest_file: target = {:#?}", target);
     }
-    let triple = get_triple_cpu(target_options);
     let mut manifest = File::create(&target)?;
-    let zircon_build = zircon_build_path(&target_options.config)?;
+    let target_out_path = target_out_dir(target_options.config)?;
+    let target_out_path_str = target_out_path.to_string_lossy();
     let shared_lib_path = shared_libraries_path(target_options)?;
     let shared_lib_str = shared_lib_path.to_string_lossy();
-    let libc_path = format!(
-        "{}/user-{}-clang.shlib/obj/system/ulib/c/libc.so",
-        zircon_build.to_string_lossy(),
-        target_options.config.fuchsia_arch
-    );
+    let libc_path = format!("{}/user.libc_x64/libc.so", target_out_path_str);
     let fdio_path = format!("{}/libfdio.so", shared_lib_str);
     let libsyslog_path = format!("{}/libsyslog.so", shared_lib_str);
     let libtraceengine_path = format!("{}/libtrace-engine.so", shared_lib_str);
     let libasync_path = format!("{}/libasync-default.so", shared_lib_str);
-    let libcpp2_path = format!(
-        "{}/lib/{}-unknown-fuchsia/c++/libc++.so.2",
-        clang_base_path()?.to_string_lossy(),
-        triple,
-    );
-    let libcpp1abi_path = format!(
-        "{}/lib/{}-unknown-fuchsia/c++/libc++abi.so.1",
-        clang_base_path()?.to_string_lossy(),
-        triple,
-    );
-    let libunwind_path = format!(
-        "{}/lib/{}-unknown-fuchsia/c++/libunwind.so.1",
-        clang_base_path()?.to_string_lossy(),
-        triple,
-    );
+    let libcpp2_path =
+        format!("{}/obj/build/images/fuchsia.zbi/bootfs/lib/libc++.so.2", target_out_path_str,);
+    let libcpp1abi_path =
+        format!("{}/obj/build/images/fuchsia.zbi/bootfs/lib/libc++abi.so.1", target_out_path_str,);
+    let libunwind_path =
+        format!("{}/obj/build/images/fuchsia.zbi/bootfs/lib/libunwind.so.1", target_out_path_str,);
 
     let additional_libs: Vec<String> = run_cargo_options
         .fargo_manifest
diff --git a/src/sdk.rs b/src/sdk.rs
index e4620ea..6fed023 100644
--- a/src/sdk.rs
+++ b/src/sdk.rs
@@ -118,11 +118,7 @@
 }
 
 pub fn sysroot_path(options: &TargetOptions<'_, '_>) -> Result<PathBuf, Error> {
-    Ok(shared_libraries_path(&options)?.join("gen").join("build").join("config").join("fuchsia"))
-}
-
-pub fn zircon_build_path(config: &FuchsiaConfig) -> Result<PathBuf, Error> {
-    Ok(PathBuf::from(&config.zircon_build_dir))
+    Ok(target_out_dir(&options.config)?.join("gen/zircon/public/sysroot/cpp"))
 }
 
 pub fn shared_libraries_path(options: &TargetOptions<'_, '_>) -> Result<PathBuf, Error> {
