I have a binary that I built myself, but I don't remember what version of rustc
I used to build it.
It appears to have linked the standard library statically (as is typical), so I can't use readelf -d
to figure it out from what version of the standard library is linked.
I did build the binary using cargo-auditable
, but the embedded json seems not to mention the rust compiler version or the standard library:
❯ rust-audit-info bin/jaq
{"packages":[{"name":"aho-corasick","version":"1.1.3","source":"crates.io","dependencies":[28]},{"name":"autocfg","version":"1.4.0","source":"crates.io","kind":"build"},{"name":"base64","version":"0.22.1","source":"crates.io"},{"name":"bitflags","version":"2.7.0","source":"crates.io"},{"name":"cc","version":"1.2.9","source":"crates.io","kind":"build","dependencies":[35]},{"name":"cfg-if","version":"1.0.0","source":"crates.io"},{"name":"chrono","version":"0.4.39","source":"crates.io","dependencies":[31]},{"name":"codesnake","version":"0.2.1","source":"crates.io"},{"name":"dyn-clone","version":"1.0.17","source":"crates.io"},{"name":"env_logger","version":"0.10.2","source":"crates.io","dependencies":[27]},{"name":"equivalent","version":"1.0.1","source":"crates.io"},{"name":"errno","version":"0.3.10","source":"crates.io","dependencies":[23]},{"name":"fastrand","version":"2.3.0","source":"crates.io"},{"name":"foldhash","version":"0.1.4","source":"crates.io"},{"name":"getrandom","version":"0.2.15","source":"crates.io","dependencies":[5,23]},{"name":"hashbrown","version":"0.15.2","source":"crates.io"},{"name":"hifijson","version":"0.2.2","source":"crates.io"},{"name":"indexmap","version":"2.7.0","source":"crates.io","dependencies":[10,15]},{"name":"is-terminal","version":"0.4.13","source":"crates.io","dependencies":[23]},{"name":"jaq","version":"2.1.1","source":"local","dependencies":[7,9,16,18,20,21,22,27,29,30,36,38,40],"root":true},{"name":"jaq-core","version":"2.1.1","source":"crates.io","dependencies":[8,32,37]},{"name":"jaq-json","version":"1.1.1","source":"crates.io","dependencies":[13,16,17,20,22]},{"name":"jaq-std","version":"2.1.0","source":"crates.io","dependencies":[0,2,6,20,24,27,33,39]},{"name":"libc","version":"0.2.169","source":"crates.io"},{"name":"libm","version":"0.2.11","source":"crates.io"},{"name":"libmimalloc-sys","version":"0.1.39","source":"crates.io","dependencies":[4,23]},{"name":"linux-raw-sys","version":"0.4.15","source":"crates.io"},{"name":"log","version":"0.4.25","source":"crates.io"},{"name":"memchr","version":"2.7.4","source":"crates.io"},{"name":"memmap2","version":"0.9.5","source":"crates.io","dependencies":[23]},{"name":"mimalloc","version":"0.1.43","source":"crates.io","dependencies":[25]},{"name":"num-traits","version":"0.2.19","source":"crates.io","dependencies":[1]},{"name":"once_cell","version":"1.20.2","source":"crates.io"},{"name":"regex-lite","version":"0.1.6","source":"crates.io"},{"name":"rustix","version":"0.38.43","source":"crates.io","dependencies":[3,11,23,26]},{"name":"shlex","version":"1.3.0","source":"crates.io","kind":"build"},{"name":"tempfile","version":"3.15.0","source":"crates.io","dependencies":[5,12,14,32,34]},{"name":"typed-arena","version":"2.0.2","source":"crates.io"},{"name":"unicode-width","version":"0.1.13","source":"crates.io"},{"name":"urlencoding","version":"2.1.3","source":"crates.io"},{"name":"yansi","version":"1.0.1","source":"crates.io"}]}
It was built with --release
, so it appears the debug symbols have been stripped:
❯ rust-gdb -q bin/jaq -ex quit
Reading symbols from bin/jaq...
(No debugging symbols found in bin/jaq)
How can I figure out what version of rustc (or, equivalently, what version of the standard library) was used to build this binary?
A crude solution is to use strings
:
❯ strings bin/jaq | grep 'rustc version'
rustc version 1.86.0 (05f9846f8 2025-03-31)
There's probably a better way to find that, but at least it's reassuring to know the answer is in there somewhere.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With