# better libc detection \(\#1996\) · gitcafe/zig

[View on GitCafe](https://git.cafe/gitcafe/zig/commit/6fd8d455bcc6765e7411fa00d23dca1eb270aac9)

Repository: [gitcafe/zig](https://git.cafe/gitcafe/zig)

Visibility: public

Requested revision: 6fd8d455bcc6765e7411fa00d23dca1eb270aac9

Requested commit: 6fd8d455bcc6765e7411fa00d23dca1eb270aac9

Commit: 6fd8d455bcc6765e7411fa00d23dca1eb270aac9

Tree: 047a654678400140fd46ffa64d7c4248050247cd

Author: Andrew Kelley

Committer: GitHub

## Message

```
better libc detection (#1996)

* better libc detection

This introduces a new command `zig libc` which prints
the various paths of libc files. It outputs them to stdout
in a simple text file format that it is capable of parsing.
You can use `zig libc libc.txt` to validate a file.

These arguments are gone:
--libc-lib-dir [path]        directory where libc crt1.o resides
--libc-static-lib-dir [path] directory where libc crtbegin.o resides
--msvc-lib-dir [path]        (windows) directory where vcruntime.lib resides
--kernel32-lib-dir [path]    (windows) directory where kernel32.lib resides

Instead we have this argument:
--libc [file]                Provide a file which specifies libc paths

This is used to pass a libc text file (which can be generated with
`zig libc`). So it is easier to manage multiple cross compilation
environments.

`--cache on` now works when linking against libc.

`ZigTarget` now has a bool field `is_native`

Better error messaging when you try to link against libc or use
`@cImport` but the various paths cannot be found. It should also be
faster.

* save native_libc.txt in zig-cache

This avoids having to detect libc at runtime on every invocation.
```

## Parents

- [52bb71867d8d6e738eefb7dafead875eb21a4ae7](https://git.cafe/gitcafe/zig/commit/52bb71867d8d6e738eefb7dafead875eb21a4ae7?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zig/tree/6fd8d455bcc6765e7411fa00d23dca1eb270aac9?format=markdown)
