Hi, I’m trying to compile rust source code into a library (lib*.so) that can be used by android devices. However I got stuck when the cargo build command cannot find the stubs-32.h of a particular glibc-dev. I checked the other glibc-devs inside /nix/store and they have that header file. How can the glibc-dev that is used by my system get that header file? Thanks for the help
anyone has any ideas how to go around this?
To give some context on this
As you can see the glibc-dev that is used by my system doesn’t have that header file while the other glibc-dev that got installed before has one. Can somebody help me? Im stuck with this, thanks
looks like i’m in a similar situation:
$ find /nix/store/ -name stubs-32.h find: ‘/nix/store/3b23rc9iqglir3kbq1rs3plagr0ffx05-vm-test-run-certmgr-systemd.drv.chroot’: Permission denied /nix/store/qva24pnd66nyb0v5r7knshb6k3wlxv99-glibc-2.27-dev/include/gnu/stubs-32.h /nix/store/zvkyj8lvm9xm5wgqj5n36495w4zzw0d5-source/lib/libc/include/generic-glibc/gnu/stubs-32.h /nix/store/fky7wzbmz6pk477n79y8ac9ih55zvmq1-zig-0.5.0/lib/zig/libc/include/generic-glibc/gnu/stubs-32.h /nix/store/x9jnwjzn0rh4ywvaxb1d5wxx65pbs1rl-glibc-2.27-dev/include/gnu/stubs-32.h /nix/store/k57l3sjhqq6glvwmrgckhkp90zxif81z-glibc-multi-2.27-dev/include/gnu/stubs-32.h /nix/store/jb68g1vdgvqplmc2k75fxz6phrjgwzkn-glibc-2.27-dev/include/gnu/stubs-32.h $ nix-build -A glibc.dev /nix/store/4v4ginzfvpsrnvafl1cxx1jn4wy6kc1r-glibc-2.27-dev $ ls ./result-dev/include/gnu/ lib-names-64.h lib-names.h libc-version.h stubs-64.h stubs.h
$ nix-build -A pkgsi686Linux.glibc.dev /nix/store/qva24pnd66nyb0v5r7knshb6k3wlxv99-glibc-2.27-dev $ ls ./result-dev/include/gnu/ lib-names-32.h lib-names.h libc-version.h stubs-32.h stubs.h
glibc -> pkgsi686Linux.glibc
It’s probably safer to use
glibc_multi for this (or
gccMultiStdenv). I think there’s a few headers that are just available for arm32, and won’t be in i686-linux.
wasn’t aware of these,
Based on what I have read said so far, I created a shell.nix that has
pkgsi686Linux.glibc inside the
buildInputs. I used that to enter into a nix shell and the
cargo build command seems to be working now ( because I’m getting another error ). Last question though… Is it possible that the 64bit glibc have those 32bit header files from pkgsi686Linux.glibc?
What’s the difference between those and
And when I’m using
multiStdenv, how do I get to the lib64 directory? Using
stdenv.cc.cc.lib leads me to
/lib64. Neither does