Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Which version of the rust compiler was used to build a given linux binary?

Tags:

rust

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?

like image 611
ComputerDruid Avatar asked Aug 31 '25 03:08

ComputerDruid


1 Answers

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.

like image 125
ComputerDruid Avatar answered Sep 02 '25 18:09

ComputerDruid