Install
$ agentstack add skill-mohitmishra786-low-level-dev-skills-gcc ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
GCC
Purpose
Guide agents through GCC invocation: flag selection, build modes, warning triage, PGO, LTO, and common error patterns. Assume the project uses GNU Make, CMake, or a shell script.
Triggers
- "What flags should I use for a release build?"
- "GCC is giving me a warning/error I don't understand"
- "How do I enable LTO / PGO with GCC?"
- "How do I compile with
-fsanitize?" - "My binary is too large / too slow"
- Undefined reference errors, ABI mismatch, missing symbols
Workflow
1. Choose a build mode
| Goal | Recommended flags | |------|-------------------| | Debug | -g -O0 -Wall -Wextra | | Debug + debuggable optimisation | -g -Og -Wall -Wextra | | Release | -O2 -DNDEBUG -Wall | | Release (max perf, native only) | -O3 -march=native -DNDEBUG | | Release (min size) | -Os -DNDEBUG | | Sanitizer (dev) | -g -O1 -fsanitize=address,undefined |
Always pass -std=c11 / -std=c++17 (or the required standard) explicitly. Never rely on the implicit default.
2. Warning discipline
Start with -Wall -Wextra. For stricter standards compliance add -Wpedantic. To treat all warnings as errors in CI: -Werror.
Suppress a specific warning only in a narrow scope:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-parameter"
// ...
#pragma GCC diagnostic pop
Do not pass -w (silences everything) except as a last resort for third-party headers.
3. Debug information
-g— DWARF debug info, default level 2-g3— includes macro definitions (useful with GDBmacro expand)-ggdb— DWARF extensions optimal for GDB-gsplit-dwarf— splits.dwofiles; reduces link time, needed fordebuginfod
Pair -g with -Og (not -O0) when you need readable optimised code in GDB.
4. Optimisation decision tree
Need max throughput on a fixed machine?
yes -> -O3 -march=native -flto
no -> profiling available?
yes -> -O2 -fprofile-use
no -> -O2
Size-constrained (embedded, shared lib)?
yes -> -Os (or -Oz with clang)
-O3 vs -O2: -O3 adds aggressive loop transformations (-funswitch-loops, -fpeel-loops, -floop-interchange) and more aggressive inlining. Use -O3 only after benchmarking; it occasionally regresses due to i-cache pressure.
-Ofast: enables -ffast-math which breaks IEEE 754 semantics (NaN handling, associativity). Avoid unless the numerical domain explicitly permits it.
5. Link-time optimisation (LTO)
# Compile
gcc -O2 -flto -c foo.c -o foo.o
gcc -O2 -flto -c bar.c -o bar.o
# Link (must pass -flto again)
gcc -O2 -flto foo.o bar.o -o prog
Use gcc-ar / gcc-ranlib instead of ar / ranlib when archiving LTO objects into static libs.
For parallel LTO: -flto=auto (uses make-style jobserver) or -flto=N.
See [references/flags.md](references/flags.md) for full flag reference. See skills/binaries/linkers-lto for linker-level LTO configuration.
6. Profile-guided optimisation (PGO)
# Step 1: instrument
gcc -O2 -fprofile-generate prog.c -o prog_inst
# Step 2: run with representative workload
./prog_inst &1 | grep -A20 '#include '
# Check if a flag is supported
gcc -Q --help=target | grep march
For a complete flag cheatsheet, see [references/flags.md](references/flags.md). For common error patterns and examples, see [references/examples.md](references/examples.md).
Related skills
- Use
skills/runtimes/sanitizersto add-fsanitize=*builds - Use
skills/compilers/clangwhen switching to clang/LLVM - Use
skills/binaries/linkers-ltofor advanced LTO linker flags - Use
skills/debuggers/gdbfor debugging GCC-built binaries
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: mohitmishra786
- Source: mohitmishra786/low-level-dev-skills
- License: MIT
- Homepage: https://www.lowleveldevskills.com
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.