Skip to content

Quickstart can't build hello world: librustc_codegen_gcc.so not found #930

Open

Description

@xobs

I'm trying to build librustc_codegen_gcc.so from this repo (rather than from Rust) to make it easier to upstream patches. However, the Quickstart instructions do not appear to work.

Following the instructions, I've:

  1. Copied config.example.toml to config.toml
  2. Ran ./y.sh prepare
  3. Ran ./y.sh build --sysroot --release

Now I'm trying to run the fourth step:

$ ./y.sh cargo build --manifest-path tests/hello-world/Cargo.toml
[BUILD] build system
    Finished [`release` profile [optimized]](https://doc.rust-lang.org/cargo/reference/profiles.html#default-profiles) target(s) in 0.01s
Using `/home/seancross/Code/rustc_codegen_gcc/build/libgccjit/b794cb99508e7eccd40fa42bb310d5781e09899b` as path for libgccjit
   Compiling hello_world v0.0.0 (/home/seancross/Code/rustc_codegen_gcc/tests/hello-world)
error: couldn't load codegen backend /home/seancross/Code/rustc_codegen_gcc/target/debug/librustc_codegen_gcc.so: cannot open shared object file: No such file or directory

error: could not compile `hello_world` (bin "hello_world") due to 1 previous error
$

It appears to be looking for something under target/debug even though the instructions say to run ./y.sh build --sysroot --release. If I re-run step 3 with ./y.sh build --sysroot without --release, then attempting to build hello-world gives a different error:

$ ./y.sh cargo build --manifest-path tests/hello-world/Cargo.toml
[BUILD] build system
    Finished [`release` profile [optimized]](https://doc.rust-lang.org/cargo/reference/profiles.html#default-profiles) target(s) in 0.00s
Using `/home/seancross/Code/rustc_codegen_gcc/build/libgccjit/b794cb99508e7eccd40fa42bb310d5781e09899b` as path for libgccjit
   Compiling hello_world v0.0.0 (/home/seancross/Code/rustc_codegen_gcc/tests/hello-world)
error[E0463]: can't find crate for `mylib`
 --> src/main.rs:1:5
  |
1 | use mylib::my_func;
  |     ^^^^^ can't find crate

For more information about this error, try `rustc --explain E0463`.
error: could not compile `hello_world` (bin "hello_world") due to 1 previous error
$

Activity

  1. antoyo commented on Jul 26, 2026

    @antoyo
    Contributor

    It appears to be looking for something under target/debug even though the instructions say to run ./y.sh build --sysroot --release.

    Yeah, I guess the instructions are confusing. It says later to specify the CHANNEL.

    If I re-run step 3 with ./y.sh build --sysroot without --release, then attempting to build hello-world gives a different error:

    This project uses LTO, so it might be problematic to run. Please try with another project that does not use LTO and tell me if you still have an issue.

  2. xobs commented on Jul 26, 2026

    @xobs
    ContributorAuthor

    I'm able to run rustc directly (which is how I'm writing my testcases), but I'm not able to run the test suite since even CHANNEL=release ./y.sh test --release fails with the error.

    What's the correct way to run the test suite?

  3. antoyo commented on Jul 26, 2026

    @antoyo
    Contributor

    I usually do not use --release or CHANNEL=release, so please try dropping both.
    If that does not work, please post the complete error.

  4. xobs commented on Jul 26, 2026

    @xobs
    ContributorAuthor

    If I omit the --release flags mentioned in the README.md it does work, yes.

    Is t here any way to run just a single test? The whole suite takes a while. That'd be nice to include in the README as well. I'm interested in just running int tests right now, for example.

    EDIT: I see from the CI directory I'd want to run ./y.sh test --cargo-tests -- int

  5. antoyo commented on Jul 26, 2026

    @antoyo
    Contributor

    Is there any way to run just a single test?

    ./y.sh test --help shows the different tests you can run.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions