# buildid: get the buildid from your (running) library or executable
Get a `&'static [u8]` that is unique to the current binary.
```rust
println!("{:?}", buildid::build_id())
```
A build-id is a value which is guaranteed to change when any of the component
objects of a binary change. A change in the build-id does not guarantee that
the executable or it's components are actually different. Two distinct
executables may have a different build-id if they were modified after linking
(for example, by `chrpath` or similar).
A build-id is intended to be sufficient to identify the appropriate debug
information to use for a given object, and is used for this purpose by `gdb`
and other debuggers.
Both executables and shared objects contain build-ids. Using
`buildid::build_id()` will return the build-id for the object that includes
`buildid` (this crate). For example, if you write a shared object (shared
library) using this crate, and provide a function which returns the build-id
(by calling `buildid::build_id()` internally) in the shared objects's external
API, that function call will return the build-id of the shared object/library
(not the executable).
Windows, MacOS, and Linux are supported (and work automatically). Embedded and
other platforms can be supported by enabling one of the optional features (see
the [docs](https://docs.rs/buildid) for details). If you have another platform
that needs support, send a PR!
By default, the `buildid` crate will pick the best build-id lookup function it
can for your platform. If one is not available, it may fail to compile. If you
have a custom build-id lookup mechanism you want to tell `buildid` about,
enabling one of the features may help.
## License
Licensed under Mozilla Public License 2.0
### Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you shall be licensed as above, without any
additional terms or conditions.