@fredlackey/devutils 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/README.md +5 -5
  2. package/package.json +1 -1
  3. package/src/commands/install.js +374 -36
  4. package/src/installs/adobe-creative-cloud.js +527 -25
  5. package/src/installs/adobe-creative-cloud.md +605 -0
  6. package/src/installs/appcleaner.js +303 -26
  7. package/src/installs/appcleaner.md +699 -0
  8. package/src/installs/apt-transport-https.js +390 -0
  9. package/src/installs/apt-transport-https.md +678 -0
  10. package/src/installs/atomicparsley.js +624 -26
  11. package/src/installs/atomicparsley.md +795 -0
  12. package/src/installs/aws-cli.js +779 -26
  13. package/src/installs/aws-cli.md +727 -0
  14. package/src/installs/balena-etcher.js +688 -26
  15. package/src/installs/balena-etcher.md +761 -0
  16. package/src/installs/bambu-studio.js +912 -26
  17. package/src/installs/bambu-studio.md +780 -0
  18. package/src/installs/bash-completion.js +554 -23
  19. package/src/installs/bash-completion.md +833 -0
  20. package/src/installs/bash.js +399 -26
  21. package/src/installs/bash.md +993 -0
  22. package/src/installs/beyond-compare.js +585 -26
  23. package/src/installs/beyond-compare.md +813 -0
  24. package/src/installs/build-essential.js +511 -26
  25. package/src/installs/build-essential.md +977 -0
  26. package/src/installs/ca-certificates.js +618 -0
  27. package/src/installs/ca-certificates.md +937 -0
  28. package/src/installs/caffeine.js +490 -26
  29. package/src/installs/caffeine.md +839 -0
  30. package/src/installs/camtasia.js +577 -25
  31. package/src/installs/camtasia.md +762 -0
  32. package/src/installs/chatgpt.js +458 -26
  33. package/src/installs/chatgpt.md +814 -0
  34. package/src/installs/chocolatey.js +447 -0
  35. package/src/installs/chocolatey.md +661 -0
  36. package/src/installs/chrome-canary.js +472 -26
  37. package/src/installs/chrome-canary.md +641 -0
  38. package/src/installs/chromium.js +645 -26
  39. package/src/installs/chromium.md +838 -0
  40. package/src/installs/claude-code.js +558 -26
  41. package/src/installs/claude-code.md +1173 -0
  42. package/src/installs/curl.js +361 -26
  43. package/src/installs/curl.md +714 -0
  44. package/src/installs/cursor.js +561 -26
  45. package/src/installs/cursor.md +970 -0
  46. package/src/installs/dbschema.js +674 -26
  47. package/src/installs/dbschema.md +925 -0
  48. package/src/installs/dependencies.md +435 -0
  49. package/src/installs/development-tools.js +600 -0
  50. package/src/installs/development-tools.md +977 -0
  51. package/src/installs/docker.js +1010 -25
  52. package/src/installs/docker.md +1109 -0
  53. package/src/installs/drawio.js +1001 -26
  54. package/src/installs/drawio.md +795 -0
  55. package/src/installs/elmedia-player.js +328 -25
  56. package/src/installs/elmedia-player.md +556 -0
  57. package/src/installs/ffmpeg.js +870 -25
  58. package/src/installs/ffmpeg.md +852 -0
  59. package/src/installs/file.js +464 -0
  60. package/src/installs/file.md +987 -0
  61. package/src/installs/gemini-cli.js +793 -26
  62. package/src/installs/gemini-cli.md +1153 -0
  63. package/src/installs/git.js +382 -26
  64. package/src/installs/git.md +907 -0
  65. package/src/installs/gitego.js +931 -26
  66. package/src/installs/gitego.md +1172 -0
  67. package/src/installs/go.js +913 -26
  68. package/src/installs/go.md +958 -0
  69. package/src/installs/google-chrome.js +801 -25
  70. package/src/installs/google-chrome.md +862 -0
  71. package/src/installs/gpg.js +412 -73
  72. package/src/installs/gpg.md +1056 -0
  73. package/src/installs/homebrew.js +1015 -26
  74. package/src/installs/homebrew.md +988 -0
  75. package/src/installs/imageoptim.js +950 -26
  76. package/src/installs/imageoptim.md +1119 -0
  77. package/src/installs/installers.json +2297 -0
  78. package/src/installs/jq.js +382 -26
  79. package/src/installs/jq.md +809 -0
  80. package/src/installs/keyboard-maestro.js +701 -26
  81. package/src/installs/keyboard-maestro.md +825 -0
  82. package/src/installs/latex.js +771 -26
  83. package/src/installs/latex.md +1095 -0
  84. package/src/installs/lftp.js +338 -26
  85. package/src/installs/lftp.md +907 -0
  86. package/src/installs/lsb-release.js +346 -0
  87. package/src/installs/lsb-release.md +814 -0
  88. package/src/installs/messenger.js +829 -26
  89. package/src/installs/messenger.md +900 -0
  90. package/src/installs/microsoft-office.js +550 -26
  91. package/src/installs/microsoft-office.md +760 -0
  92. package/src/installs/microsoft-teams.js +782 -25
  93. package/src/installs/microsoft-teams.md +886 -0
  94. package/src/installs/node.js +886 -26
  95. package/src/installs/node.md +1153 -0
  96. package/src/installs/nordpass.js +698 -26
  97. package/src/installs/nordpass.md +921 -0
  98. package/src/installs/nvm.js +977 -26
  99. package/src/installs/nvm.md +1057 -0
  100. package/src/installs/openssh.js +734 -64
  101. package/src/installs/openssh.md +1056 -0
  102. package/src/installs/pandoc.js +644 -26
  103. package/src/installs/pandoc.md +1036 -0
  104. package/src/installs/pinentry.js +492 -26
  105. package/src/installs/pinentry.md +1142 -0
  106. package/src/installs/pngyu.js +851 -26
  107. package/src/installs/pngyu.md +896 -0
  108. package/src/installs/postman.js +781 -26
  109. package/src/installs/postman.md +940 -0
  110. package/src/installs/procps.js +425 -0
  111. package/src/installs/procps.md +851 -0
  112. package/src/installs/safari-tech-preview.js +355 -25
  113. package/src/installs/safari-tech-preview.md +533 -0
  114. package/src/installs/sfnt2woff.js +640 -26
  115. package/src/installs/sfnt2woff.md +795 -0
  116. package/src/installs/shellcheck.js +463 -26
  117. package/src/installs/shellcheck.md +1005 -0
  118. package/src/installs/slack.js +722 -25
  119. package/src/installs/slack.md +865 -0
  120. package/src/installs/snagit.js +566 -25
  121. package/src/installs/snagit.md +844 -0
  122. package/src/installs/software-properties-common.js +372 -0
  123. package/src/installs/software-properties-common.md +805 -0
  124. package/src/installs/spotify.js +858 -25
  125. package/src/installs/spotify.md +901 -0
  126. package/src/installs/studio-3t.js +803 -26
  127. package/src/installs/studio-3t.md +918 -0
  128. package/src/installs/sublime-text.js +780 -25
  129. package/src/installs/sublime-text.md +914 -0
  130. package/src/installs/superwhisper.js +687 -25
  131. package/src/installs/superwhisper.md +630 -0
  132. package/src/installs/tailscale.js +727 -26
  133. package/src/installs/tailscale.md +1100 -0
  134. package/src/installs/tar.js +389 -0
  135. package/src/installs/tar.md +946 -0
  136. package/src/installs/termius.js +780 -26
  137. package/src/installs/termius.md +844 -0
  138. package/src/installs/terraform.js +761 -26
  139. package/src/installs/terraform.md +899 -0
  140. package/src/installs/tidal.js +752 -25
  141. package/src/installs/tidal.md +864 -0
  142. package/src/installs/tmux.js +328 -26
  143. package/src/installs/tmux.md +1030 -0
  144. package/src/installs/tree.js +393 -26
  145. package/src/installs/tree.md +833 -0
  146. package/src/installs/unzip.js +460 -0
  147. package/src/installs/unzip.md +879 -0
  148. package/src/installs/vim.js +403 -26
  149. package/src/installs/vim.md +1040 -0
  150. package/src/installs/vlc.js +803 -26
  151. package/src/installs/vlc.md +927 -0
  152. package/src/installs/vscode.js +825 -26
  153. package/src/installs/vscode.md +1002 -0
  154. package/src/installs/wget.js +415 -0
  155. package/src/installs/wget.md +791 -0
  156. package/src/installs/whatsapp.js +710 -25
  157. package/src/installs/whatsapp.md +854 -0
  158. package/src/installs/winpty.js +352 -0
  159. package/src/installs/winpty.md +620 -0
  160. package/src/installs/woff2.js +535 -26
  161. package/src/installs/woff2.md +977 -0
  162. package/src/installs/wsl.js +572 -0
  163. package/src/installs/wsl.md +699 -0
  164. package/src/installs/xcode-clt.js +520 -0
  165. package/src/installs/xcode-clt.md +351 -0
  166. package/src/installs/xcode.js +542 -26
  167. package/src/installs/xcode.md +573 -0
  168. package/src/installs/yarn.js +806 -26
  169. package/src/installs/yarn.md +1074 -0
  170. package/src/installs/yq.js +636 -26
  171. package/src/installs/yq.md +944 -0
  172. package/src/installs/yt-dlp.js +683 -26
  173. package/src/installs/yt-dlp.md +946 -0
  174. package/src/installs/yum-utils.js +297 -0
  175. package/src/installs/yum-utils.md +648 -0
  176. package/src/installs/zoom.js +740 -25
  177. package/src/installs/zoom.md +884 -0
  178. package/src/scripts/README.md +567 -45
  179. package/src/scripts/STATUS.md +208 -0
  180. package/src/scripts/afk.js +395 -7
  181. package/src/scripts/backup-all.js +731 -9
  182. package/src/scripts/backup-source.js +711 -8
  183. package/src/scripts/brewd.js +373 -7
  184. package/src/scripts/brewi.js +505 -9
  185. package/src/scripts/brewr.js +512 -9
  186. package/src/scripts/brews.js +462 -9
  187. package/src/scripts/brewu.js +488 -7
  188. package/src/scripts/c.js +185 -7
  189. package/src/scripts/ccurl.js +325 -8
  190. package/src/scripts/certbot-crontab-init.js +488 -8
  191. package/src/scripts/certbot-init.js +641 -9
  192. package/src/scripts/ch.js +339 -7
  193. package/src/scripts/claude-danger.js +253 -8
  194. package/src/scripts/clean-dev.js +419 -8
  195. package/src/scripts/clear-dns-cache.js +525 -7
  196. package/src/scripts/clone.js +417 -7
  197. package/src/scripts/code-all.js +420 -7
  198. package/src/scripts/count-files.js +195 -8
  199. package/src/scripts/count-folders.js +195 -8
  200. package/src/scripts/count.js +248 -8
  201. package/src/scripts/d.js +203 -7
  202. package/src/scripts/datauri.js +373 -8
  203. package/src/scripts/delete-files.js +363 -7
  204. package/src/scripts/docker-clean.js +410 -8
  205. package/src/scripts/dp.js +426 -7
  206. package/src/scripts/e.js +375 -9
  207. package/src/scripts/empty-trash.js +497 -7
  208. package/src/scripts/evm.js +428 -9
  209. package/src/scripts/fetch-github-repos.js +441 -10
  210. package/src/scripts/get-channel.js +329 -8
  211. package/src/scripts/get-course.js +384 -11
  212. package/src/scripts/get-dependencies.js +290 -9
  213. package/src/scripts/get-folder.js +783 -10
  214. package/src/scripts/get-tunes.js +411 -10
  215. package/src/scripts/get-video.js +352 -9
  216. package/src/scripts/git-backup.js +561 -9
  217. package/src/scripts/git-clone.js +477 -9
  218. package/src/scripts/git-pup.js +303 -7
  219. package/src/scripts/git-push.js +380 -8
  220. package/src/scripts/h.js +607 -9
  221. package/src/scripts/hide-desktop-icons.js +483 -7
  222. package/src/scripts/hide-hidden-files.js +522 -7
  223. package/src/scripts/install-dependencies-from.js +440 -9
  224. package/src/scripts/ips.js +647 -10
  225. package/src/scripts/iso.js +354 -8
  226. package/src/scripts/killni.js +561 -7
  227. package/src/scripts/ll.js +451 -8
  228. package/src/scripts/local-ip.js +310 -8
  229. package/src/scripts/m.js +508 -8
  230. package/src/scripts/map.js +293 -8
  231. package/src/scripts/mkd.js +287 -7
  232. package/src/scripts/ncu-update-all.js +441 -8
  233. package/src/scripts/nginx-init.js +702 -12
  234. package/src/scripts/npmi.js +366 -7
  235. package/src/scripts/o.js +495 -8
  236. package/src/scripts/org-by-date.js +321 -7
  237. package/src/scripts/p.js +208 -7
  238. package/src/scripts/packages.js +313 -8
  239. package/src/scripts/path.js +209 -7
  240. package/src/scripts/ports.js +582 -8
  241. package/src/scripts/q.js +290 -8
  242. package/src/scripts/refresh-files.js +378 -10
  243. package/src/scripts/remove-smaller-files.js +500 -8
  244. package/src/scripts/rename-files-with-date.js +517 -9
  245. package/src/scripts/resize-image.js +523 -9
  246. package/src/scripts/rm-safe.js +653 -8
  247. package/src/scripts/s.js +525 -9
  248. package/src/scripts/set-git-public.js +349 -7
  249. package/src/scripts/show-desktop-icons.js +459 -7
  250. package/src/scripts/show-hidden-files.js +456 -7
  251. package/src/scripts/tpa.js +265 -8
  252. package/src/scripts/tpo.js +264 -7
  253. package/src/scripts/u.js +489 -7
  254. package/src/scripts/vpush.js +422 -8
  255. package/src/scripts/y.js +267 -7
  256. package/src/utils/common/os.js +94 -2
  257. package/src/utils/ubuntu/apt.js +13 -7
  258. package/src/utils/windows/choco.js +82 -26
  259. package/src/utils/windows/winget.js +89 -27
@@ -0,0 +1,977 @@
1
+ # Installing Build Essential
2
+
3
+ ## Overview
4
+
5
+ Build essential tools are the foundational compilation utilities required to build software from source code. These packages typically include the GNU Compiler Collection (GCC) for C and C++, GNU Make for build automation, and related utilities. Having these tools installed is a prerequisite for compiling many open-source projects, installing native Node.js modules, building Python packages with C extensions, and general software development.
6
+
7
+ The exact package name and contents vary by platform:
8
+ - **Linux (Debian/Ubuntu/Raspberry Pi)**: `build-essential` meta-package
9
+ - **Amazon Linux/RHEL**: "Development Tools" group package
10
+ - **macOS**: Xcode Command Line Tools
11
+ - **Windows**: Visual Studio Build Tools with C++ workload
12
+
13
+ ## Dependencies
14
+
15
+ ### macOS (Homebrew)
16
+
17
+ - **Required:**
18
+ - `softwareupdate` - Pre-installed system utility for managing macOS software updates
19
+ - `xcode-select` - Pre-installed utility for managing Xcode developer tools
20
+ - `touch` - Pre-installed Unix utility (part of coreutils)
21
+ - `grep` - Pre-installed text search utility
22
+ - `tail` - Pre-installed text processing utility
23
+ - `sed` - Pre-installed stream editor utility
24
+ - `rm` - Pre-installed file deletion utility
25
+ - **Optional:** None
26
+ - **Auto-installed:** None (this installer installs Xcode Command Line Tools itself)
27
+
28
+ **Note**: All required dependencies are pre-installed on macOS. No additional packages need to be installed before running this installer.
29
+
30
+ ### Ubuntu (APT/Snap)
31
+
32
+ - **Required:**
33
+ - `sudo` - Pre-installed on Ubuntu for privilege escalation
34
+ - `apt-get` - Pre-installed APT package manager (part of `apt` package)
35
+ - `dpkg` - Pre-installed Debian package manager
36
+ - **Optional:** None
37
+ - **Auto-installed:** The `build-essential` package automatically installs:
38
+ - `gcc` (GNU C Compiler)
39
+ - `g++` (GNU C++ Compiler)
40
+ - `make` (GNU Make build automation)
41
+ - `libc6-dev` (C library development headers)
42
+ - `dpkg-dev` (Debian package development tools)
43
+
44
+ **Note**: All required dependencies are pre-installed on Ubuntu. No additional packages need to be installed before running this installer.
45
+
46
+ ### Raspberry Pi OS (APT/Snap)
47
+
48
+ - **Required:**
49
+ - `sudo` - Pre-installed on Raspberry Pi OS for privilege escalation
50
+ - `apt-get` - Pre-installed APT package manager (part of `apt` package)
51
+ - `dpkg` - Pre-installed Debian package manager
52
+ - **Optional:** None
53
+ - **Auto-installed:** The `build-essential` package automatically installs:
54
+ - `gcc` (GNU C Compiler, ARM-compatible)
55
+ - `g++` (GNU C++ Compiler, ARM-compatible)
56
+ - `make` (GNU Make build automation)
57
+ - `libc6-dev` (C library development headers)
58
+ - `dpkg-dev` (Debian package development tools)
59
+
60
+ **Note**: All required dependencies are pre-installed on Raspberry Pi OS (Debian-based). No additional packages need to be installed before running this installer. Installation may take 5-10 minutes on older Raspberry Pi models.
61
+
62
+ ### Amazon Linux (DNF/YUM)
63
+
64
+ - **Required:**
65
+ - `sudo` - Pre-installed on Amazon Linux for privilege escalation
66
+ - `dnf` (Amazon Linux 2023) OR `yum` (Amazon Linux 2) - Pre-installed package manager
67
+ - **Optional:** None
68
+ - **Auto-installed:** The "Development Tools" group automatically installs:
69
+ - `gcc` (GNU C Compiler)
70
+ - `gcc-c++` / `g++` (GNU C++ Compiler)
71
+ - `make` (GNU Make build automation)
72
+ - `autoconf` (Configure script generator)
73
+ - `automake` (Makefile generator)
74
+ - `patch` (File patching utility)
75
+ - `rpm-build` (RPM package building tools)
76
+ - And many other development utilities
77
+
78
+ **Note**: All required dependencies are pre-installed on Amazon Linux. The installer automatically detects whether to use `dnf` (AL2023) or `yum` (AL2). In Docker containers, you may see a `grub2-common` warning which can be safely ignored.
79
+
80
+ ### Windows (Chocolatey/winget)
81
+
82
+ - **Required:**
83
+ - Chocolatey package manager - Install from https://chocolatey.org/install
84
+ - Administrator privileges - Required to run Chocolatey commands
85
+ - **Optional:** None
86
+ - **Auto-installed:** The Visual Studio Build Tools packages automatically install:
87
+ - MSVC compiler (`cl.exe`)
88
+ - Microsoft Linker (`link.exe`)
89
+ - Windows SDK headers and libraries
90
+ - `nmake` (Microsoft Program Maintenance Utility)
91
+ - Visual C++ build tools and runtime libraries
92
+ - CMake (build system generator)
93
+ - And many other build utilities
94
+
95
+ **Installation requirements:**
96
+ - At least 5-8 GB of free disk space
97
+ - Installation takes 10-20 minutes
98
+ - May require system reboot after installation
99
+ - Use "Developer Command Prompt for VS 2022" or "Developer PowerShell for VS 2022" to access build tools
100
+
101
+ **Note**: Chocolatey is the only dependency that must be installed manually before running this installer. The installer will throw an error if Chocolatey is not available.
102
+
103
+ ### Git Bash (Manual/Portable)
104
+
105
+ - **Required:**
106
+ - Git Bash (comes with Git for Windows) - Install from https://git-scm.com/download/win
107
+ - **Option 1**: Visual Studio Build Tools (see Windows section above)
108
+ - **Option 2**: MSYS2/MinGW toolchain - Install from https://www.msys2.org/
109
+ - **Optional:** None
110
+ - **Auto-installed:** None
111
+
112
+ **Note**: This installer does not support automated installation on Git Bash. The installer provides guidance for two options:
113
+
114
+ **Option 1 - Visual Studio Build Tools (Recommended for Windows development):**
115
+ Run the Windows installer from an Administrator PowerShell or Command Prompt (not Git Bash):
116
+ ```powershell
117
+ choco install visualstudio2022buildtools -y
118
+ choco install visualstudio2022-workload-vctools -y --package-parameters "--includeRecommended"
119
+ ```
120
+
121
+ **Option 2 - MSYS2/MinGW Toolchain:**
122
+ 1. Download MSYS2 installer from https://www.msys2.org/
123
+ 2. Open MSYS2 MINGW64 terminal and run:
124
+ ```bash
125
+ pacman -Syu --noconfirm
126
+ pacman -S --noconfirm --needed mingw-w64-x86_64-toolchain
127
+ ```
128
+ 3. Add to `~/.bashrc`:
129
+ ```bash
130
+ export PATH="/c/msys64/mingw64/bin:$PATH"
131
+ ```
132
+
133
+ ## Prerequisites
134
+
135
+ Before installing build essential tools on any platform, ensure:
136
+
137
+ 1. **Administrative privileges** - Root or sudo access on Unix-like systems, Administrator on Windows
138
+ 2. **Internet connectivity** - Required to download packages and dependencies
139
+ 3. **Sufficient disk space** - At least 2-5 GB depending on platform (Windows requires the most)
140
+
141
+ ## Platform-Specific Installation
142
+
143
+ ### macOS (Xcode Command Line Tools)
144
+
145
+ #### Prerequisites
146
+
147
+ - macOS 11 (Big Sur) or later recommended
148
+ - Terminal access
149
+ - Apple ID (may be required for some download methods)
150
+
151
+ On macOS, the Xcode Command Line Tools provide GCC, Clang, Make, and other essential build utilities. This is the standard way to get compilation tools on macOS.
152
+
153
+ #### Installation Steps
154
+
155
+ Run the following script to install Xcode Command Line Tools non-interactively. This method avoids the GUI dialog that `xcode-select --install` triggers:
156
+
157
+ ```bash
158
+ # Check if already installed
159
+ if ! xcode-select -p &> /dev/null; then
160
+ echo "Installing Xcode Command Line Tools..."
161
+
162
+ # Create a placeholder file that triggers softwareupdate to list CLI tools
163
+ touch /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress
164
+
165
+ # Find the latest Command Line Tools package
166
+ PROD=$(softwareupdate -l 2>/dev/null | grep -o '.*Command Line Tools.*' | tail -n 1 | sed 's/^[[:space:]]*//' | sed 's/^Label: //')
167
+
168
+ # Install the package silently
169
+ softwareupdate -i "$PROD" --verbose
170
+
171
+ # Clean up the placeholder file
172
+ rm -f /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress
173
+ else
174
+ echo "Xcode Command Line Tools already installed."
175
+ fi
176
+ ```
177
+
178
+ **Note**: The `softwareupdate` command may take 5-15 minutes depending on your internet connection. The `--verbose` flag provides progress output.
179
+
180
+ #### Verification
181
+
182
+ Confirm the installation succeeded by checking for the compiler and make utility:
183
+
184
+ ```bash
185
+ gcc --version
186
+ make --version
187
+ ```
188
+
189
+ Expected output (version numbers may vary):
190
+
191
+ ```
192
+ Apple clang version 15.0.0 (clang-1500.3.9.4)
193
+ Target: arm64-apple-darwin23.3.0
194
+ ...
195
+
196
+ GNU Make 3.81
197
+ ...
198
+ ```
199
+
200
+ You can also verify the installation path:
201
+
202
+ ```bash
203
+ xcode-select -p
204
+ ```
205
+
206
+ Expected output:
207
+
208
+ ```
209
+ /Library/Developer/CommandLineTools
210
+ ```
211
+
212
+ #### Troubleshooting
213
+
214
+ **Problem**: `softwareupdate` does not find Command Line Tools
215
+
216
+ **Solution**: The placeholder file may not have triggered the listing. Ensure the file exists and retry:
217
+
218
+ ```bash
219
+ touch /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress
220
+ softwareupdate -l
221
+ ```
222
+
223
+ If still not found, download directly from Apple Developer portal: https://developer.apple.com/download/all/?q=command%20line%20tools
224
+
225
+ **Problem**: Installation hangs or fails with network error
226
+
227
+ **Solution**: Check your internet connection. Apple's software update servers may be temporarily unavailable. Wait a few minutes and retry.
228
+
229
+ **Problem**: `xcode-select: error: command line tools are already installed`
230
+
231
+ **Solution**: The tools are already installed. Use `xcode-select -p` to verify the installation path.
232
+
233
+ **Problem**: Need to reinstall or reset Command Line Tools
234
+
235
+ **Solution**: Remove and reinstall:
236
+
237
+ ```bash
238
+ sudo rm -rf /Library/Developer/CommandLineTools
239
+ xcode-select --install
240
+ ```
241
+
242
+ Note: The `xcode-select --install` command will trigger a GUI dialog for reinstallation.
243
+
244
+ ---
245
+
246
+ ### Ubuntu/Debian (APT)
247
+
248
+ #### Prerequisites
249
+
250
+ - Ubuntu 18.04 or later, or Debian 10 or later
251
+ - sudo privileges
252
+ - APT package manager (pre-installed)
253
+
254
+ The `build-essential` package is a meta-package that installs GCC, G++, Make, libc development headers, and dpkg-dev (for building Debian packages).
255
+
256
+ #### Installation Steps
257
+
258
+ Run the following commands to update the package index and install build-essential:
259
+
260
+ ```bash
261
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
262
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential
263
+ ```
264
+
265
+ The `DEBIAN_FRONTEND=noninteractive` environment variable prevents any interactive prompts. The `-y` flag automatically confirms the installation.
266
+
267
+ #### Verification
268
+
269
+ Confirm the installation succeeded:
270
+
271
+ ```bash
272
+ gcc --version
273
+ g++ --version
274
+ make --version
275
+ ```
276
+
277
+ Expected output (version numbers may vary):
278
+
279
+ ```
280
+ gcc (Ubuntu 13.2.0-23ubuntu4) 13.2.0
281
+ ...
282
+
283
+ g++ (Ubuntu 13.2.0-23ubuntu4) 13.2.0
284
+ ...
285
+
286
+ GNU Make 4.3
287
+ ...
288
+ ```
289
+
290
+ You can also list the packages included in build-essential:
291
+
292
+ ```bash
293
+ apt-cache depends build-essential
294
+ ```
295
+
296
+ #### Troubleshooting
297
+
298
+ **Problem**: `E: Unable to locate package build-essential`
299
+
300
+ **Solution**: Update the package index first:
301
+
302
+ ```bash
303
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
304
+ ```
305
+
306
+ **Problem**: `E: Could not get lock /var/lib/dpkg/lock`
307
+
308
+ **Solution**: Another process is using APT. Wait for it to finish or check for stuck processes:
309
+
310
+ ```bash
311
+ sudo killall apt apt-get 2>/dev/null
312
+ sudo rm -f /var/lib/dpkg/lock-frontend /var/lib/dpkg/lock /var/cache/apt/archives/lock
313
+ sudo dpkg --configure -a
314
+ ```
315
+
316
+ **Problem**: Dependency errors during installation
317
+
318
+ **Solution**: Fix broken packages and retry:
319
+
320
+ ```bash
321
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y -f
322
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential
323
+ ```
324
+
325
+ **Problem**: Old GCC version installed
326
+
327
+ **Solution**: Ubuntu/Debian repositories contain stable but not always latest versions. If you need a newer GCC version, use the Ubuntu Toolchain PPA (for Ubuntu only):
328
+
329
+ ```bash
330
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y software-properties-common
331
+ sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
332
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
333
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y gcc-13 g++-13
334
+ ```
335
+
336
+ ---
337
+
338
+ ### Raspberry Pi OS (APT)
339
+
340
+ #### Prerequisites
341
+
342
+ - Raspberry Pi OS (32-bit or 64-bit)
343
+ - Raspberry Pi 3, 4, 5, or Zero 2 W recommended
344
+ - sudo privileges
345
+ - APT package manager (pre-installed)
346
+
347
+ Raspberry Pi OS is based on Debian, so the `build-essential` package works identically. The package includes ARM-compatible versions of GCC, G++, and Make.
348
+
349
+ #### Installation Steps
350
+
351
+ Run the following commands to update the package index and install build-essential:
352
+
353
+ ```bash
354
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
355
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential
356
+ ```
357
+
358
+ **Note**: Installation may take longer on Raspberry Pi compared to desktop systems due to slower I/O and processor speeds. Allow 5-10 minutes on older Pi models.
359
+
360
+ #### Verification
361
+
362
+ Confirm the installation succeeded:
363
+
364
+ ```bash
365
+ gcc --version
366
+ g++ --version
367
+ make --version
368
+ ```
369
+
370
+ Expected output for 64-bit Raspberry Pi OS (version numbers may vary):
371
+
372
+ ```
373
+ gcc (Debian 12.2.0-14) 12.2.0
374
+ ...
375
+
376
+ g++ (Debian 12.2.0-14) 12.2.0
377
+ ...
378
+
379
+ GNU Make 4.3
380
+ ...
381
+ ```
382
+
383
+ Verify the target architecture:
384
+
385
+ ```bash
386
+ gcc -dumpmachine
387
+ ```
388
+
389
+ Expected output:
390
+ - 64-bit: `aarch64-linux-gnu`
391
+ - 32-bit: `arm-linux-gnueabihf`
392
+
393
+ #### Troubleshooting
394
+
395
+ **Problem**: Installation is extremely slow
396
+
397
+ **Solution**: Raspberry Pi SD cards have limited I/O speed. Ensure you are using a Class 10 or UHS-I SD card. Consider using a USB 3.0 SSD on Pi 4/5 for better performance.
398
+
399
+ **Problem**: Out of disk space during installation
400
+
401
+ **Solution**: Check available space and clean up:
402
+
403
+ ```bash
404
+ df -h
405
+ sudo DEBIAN_FRONTEND=noninteractive apt-get autoremove -y
406
+ sudo DEBIAN_FRONTEND=noninteractive apt-get clean
407
+ ```
408
+
409
+ **Problem**: `apt-get update` fails with hash sum mismatch
410
+
411
+ **Solution**: Clear the APT cache and retry:
412
+
413
+ ```bash
414
+ sudo rm -rf /var/lib/apt/lists/*
415
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
416
+ ```
417
+
418
+ **Problem**: Need cross-compilation toolchain
419
+
420
+ **Solution**: For cross-compiling from 64-bit to 32-bit or vice versa:
421
+
422
+ ```bash
423
+ # On 64-bit, install 32-bit cross-compiler
424
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf
425
+ ```
426
+
427
+ ---
428
+
429
+ ### Amazon Linux (DNF/YUM)
430
+
431
+ #### Prerequisites
432
+
433
+ - Amazon Linux 2023 (AL2023) or Amazon Linux 2 (AL2)
434
+ - sudo privileges
435
+ - DNF (AL2023) or YUM (AL2) package manager
436
+
437
+ Amazon Linux uses the "Development Tools" package group, which includes GCC, G++, Make, autoconf, automake, and related build utilities.
438
+
439
+ #### Installation Steps
440
+
441
+ **For Amazon Linux 2023:**
442
+
443
+ ```bash
444
+ sudo dnf groupinstall -y "Development Tools"
445
+ ```
446
+
447
+ **For Amazon Linux 2:**
448
+
449
+ ```bash
450
+ sudo yum groupinstall -y "Development Tools"
451
+ ```
452
+
453
+ Both commands install the full development toolchain non-interactively with the `-y` flag.
454
+
455
+ **Note**: In Docker containers running AL2023, you may see a warning about the `grub2-common` package during installation. This warning can be safely ignored as the development tools will still be installed correctly.
456
+
457
+ #### Verification
458
+
459
+ Confirm the installation succeeded:
460
+
461
+ ```bash
462
+ gcc --version
463
+ g++ --version
464
+ make --version
465
+ ```
466
+
467
+ Expected output (version numbers may vary):
468
+
469
+ ```
470
+ gcc (GCC) 11.4.1 20231218 (Red Hat 11.4.1-3)
471
+ ...
472
+
473
+ g++ (GCC) 11.4.1 20231218 (Red Hat 11.4.1-3)
474
+ ...
475
+
476
+ GNU Make 4.3
477
+ ...
478
+ ```
479
+
480
+ List all packages in the Development Tools group:
481
+
482
+ ```bash
483
+ # AL2023
484
+ dnf group info "Development Tools"
485
+
486
+ # AL2
487
+ yum group info "Development Tools"
488
+ ```
489
+
490
+ #### Troubleshooting
491
+
492
+ **Problem**: `No match for group: Development Tools`
493
+
494
+ **Solution**: Ensure the group name is exact (case-sensitive with quotes):
495
+
496
+ ```bash
497
+ # List available groups
498
+ sudo dnf group list
499
+ ```
500
+
501
+ **Problem**: Individual packages are outdated
502
+
503
+ **Solution**: Update packages after group install:
504
+
505
+ ```bash
506
+ # AL2023
507
+ sudo dnf upgrade -y gcc gcc-c++ make
508
+
509
+ # AL2
510
+ sudo yum update -y gcc gcc-c++ make
511
+ ```
512
+
513
+ **Problem**: Need a newer GCC version on AL2023
514
+
515
+ **Solution**: AL2023 provides multiple GCC versions. Install a specific version:
516
+
517
+ ```bash
518
+ sudo dnf install -y gcc13 gcc13-c++
519
+ ```
520
+
521
+ **Problem**: Docker container shows grub2-common error
522
+
523
+ **Solution**: This is a known issue in AL2023 Docker images. The error can be ignored as it only affects bootloader configuration, which is not relevant in containers. The development tools are still installed correctly.
524
+
525
+ ---
526
+
527
+ ### Windows (Chocolatey)
528
+
529
+ #### Prerequisites
530
+
531
+ - Windows 10 or Windows 11 (64-bit)
532
+ - Administrator PowerShell or Command Prompt
533
+ - Chocolatey package manager installed
534
+ - At least 5 GB free disk space
535
+
536
+ If Chocolatey is not installed, install it first by running this command in an Administrator PowerShell:
537
+
538
+ ```powershell
539
+ Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
540
+ ```
541
+
542
+ On Windows, build essential tools are provided by Visual Studio Build Tools with the Visual C++ workload. This includes the MSVC compiler, linker, libraries, and Windows SDK.
543
+
544
+ #### Installation Steps
545
+
546
+ Run the following commands in an Administrator PowerShell or Command Prompt:
547
+
548
+ ```powershell
549
+ choco install visualstudio2022buildtools -y
550
+ choco install visualstudio2022-workload-vctools -y --package-parameters "--includeRecommended"
551
+ ```
552
+
553
+ The first command installs the base Visual Studio 2022 Build Tools. The second command adds the C++ build tools workload with all recommended components.
554
+
555
+ **Note**: Installation typically takes 10-20 minutes and requires approximately 5-8 GB of disk space. A system reboot may be required after installation.
556
+
557
+ #### Verification
558
+
559
+ Open a new **Developer Command Prompt for VS 2022** (search for it in the Start menu) or **Developer PowerShell for VS 2022**, then run:
560
+
561
+ ```cmd
562
+ cl
563
+ ```
564
+
565
+ Expected output:
566
+
567
+ ```
568
+ Microsoft (R) C/C++ Optimizing Compiler Version 19.38.33135 for x64
569
+ Copyright (C) Microsoft Corporation. All rights reserved.
570
+
571
+ usage: cl [ option... ] filename... [ /link linkoption... ]
572
+ ```
573
+
574
+ Also verify the linker and build tool:
575
+
576
+ ```cmd
577
+ link
578
+ nmake
579
+ ```
580
+
581
+ #### Troubleshooting
582
+
583
+ **Problem**: `cl` is not recognized as a command
584
+
585
+ **Solution**: You must use the Developer Command Prompt or Developer PowerShell, not a regular terminal. These specialized prompts set up the necessary environment variables. Alternatively, run the vcvars batch file:
586
+
587
+ ```cmd
588
+ "C:\Program Files\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
589
+ ```
590
+
591
+ **Problem**: Installation hangs or appears stuck
592
+
593
+ **Solution**: Visual Studio installations can take a long time. Check Task Manager for `vs_installer.exe` or `setup.exe` processes. If truly stuck, cancel and retry:
594
+
595
+ ```powershell
596
+ choco uninstall visualstudio2022buildtools -y
597
+ choco install visualstudio2022buildtools -y
598
+ ```
599
+
600
+ **Problem**: Not enough disk space
601
+
602
+ **Solution**: Free up at least 8 GB on your system drive. The Build Tools install to `C:\Program Files\Microsoft Visual Studio\2022\BuildTools` by default.
603
+
604
+ **Problem**: Need to add additional workloads or components
605
+
606
+ **Solution**: Use the Visual Studio Installer GUI or install additional workload packages:
607
+
608
+ ```powershell
609
+ # Add Windows 10 SDK
610
+ choco install windows-sdk-10.0 -y
611
+ ```
612
+
613
+ **Problem**: Chocolatey command not found
614
+
615
+ **Solution**: Close all terminal windows, open a new Administrator PowerShell, and verify Chocolatey is installed:
616
+
617
+ ```powershell
618
+ choco --version
619
+ ```
620
+
621
+ ---
622
+
623
+ ### WSL (Ubuntu)
624
+
625
+ #### Prerequisites
626
+
627
+ - Windows 10 version 2004 or later, or Windows 11
628
+ - Windows Subsystem for Linux with Ubuntu installed
629
+ - WSL 2 recommended for best performance
630
+ - sudo privileges within WSL
631
+
632
+ WSL Ubuntu installations follow the same process as native Ubuntu, using APT.
633
+
634
+ #### Installation Steps
635
+
636
+ Open your WSL Ubuntu terminal and run:
637
+
638
+ ```bash
639
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
640
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential
641
+ ```
642
+
643
+ #### Verification
644
+
645
+ Confirm the installation succeeded:
646
+
647
+ ```bash
648
+ gcc --version
649
+ g++ --version
650
+ make --version
651
+ ```
652
+
653
+ Expected output (version numbers may vary):
654
+
655
+ ```
656
+ gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
657
+ ...
658
+
659
+ g++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
660
+ ...
661
+
662
+ GNU Make 4.3
663
+ ...
664
+ ```
665
+
666
+ #### Troubleshooting
667
+
668
+ **Problem**: `sudo: unable to resolve host` warnings
669
+
670
+ **Solution**: Add your hostname to `/etc/hosts`:
671
+
672
+ ```bash
673
+ echo "127.0.0.1 $(hostname)" | sudo tee -a /etc/hosts
674
+ ```
675
+
676
+ **Problem**: Extremely slow `apt-get update`
677
+
678
+ **Solution**: WSL 1 has slower file system performance. Upgrade to WSL 2:
679
+
680
+ ```powershell
681
+ # In Windows PowerShell (Administrator)
682
+ wsl --set-version Ubuntu 2
683
+ ```
684
+
685
+ **Problem**: Cannot install packages, permission denied
686
+
687
+ **Solution**: Ensure you are using `sudo` and your user is in the sudo group:
688
+
689
+ ```bash
690
+ groups
691
+ # Should include: sudo
692
+ ```
693
+
694
+ If not in sudo group (rare with default Ubuntu WSL installation):
695
+
696
+ ```bash
697
+ # From Windows, open PowerShell as Administrator
698
+ wsl -u root
699
+ usermod -aG sudo your-username
700
+ exit
701
+ ```
702
+
703
+ **Problem**: Compilation works but cannot execute binaries
704
+
705
+ **Solution**: Ensure you are compiling in the WSL file system, not in `/mnt/c/`. Linux binaries should be compiled within the Linux environment:
706
+
707
+ ```bash
708
+ cd ~
709
+ mkdir projects
710
+ cd projects
711
+ # Compile here, not in /mnt/c/Users/...
712
+ ```
713
+
714
+ ---
715
+
716
+ ### Git Bash (Manual/Portable)
717
+
718
+ #### Prerequisites
719
+
720
+ - Windows 10 or Windows 11 (64-bit)
721
+ - Git Bash installed (comes with Git for Windows)
722
+ - Visual Studio Build Tools installed on Windows (see Windows section above)
723
+
724
+ **Important**: Git Bash is a terminal emulator that provides a Unix-like command-line experience on Windows. It does not include its own compiler. To use build tools from Git Bash, you have two options:
725
+
726
+ 1. **Use Windows Visual Studio Build Tools** (recommended for most Windows development)
727
+ 2. **Use MSYS2/MinGW toolchain** (provides GCC on Windows)
728
+
729
+ This section covers using MSYS2/MinGW, which provides a GCC-based toolchain that works well from Git Bash.
730
+
731
+ #### Installation Steps
732
+
733
+ Git for Windows is built on top of MSYS2/MinGW. However, the bundled version is minimal and does not include GCC. Install the full MSYS2 environment to get GCC and Make:
734
+
735
+ **Step 1**: Download and install MSYS2 from https://www.msys2.org/
736
+
737
+ Run the installer silently from an Administrator Command Prompt:
738
+
739
+ ```cmd
740
+ :: Download MSYS2 installer (adjust version as needed)
741
+ curl -L -o %TEMP%\msys2-x86_64-latest.exe https://github.com/msys2/msys2-installer/releases/download/nightly-x86_64/msys2-x86_64-latest.exe
742
+
743
+ :: Install silently to default location
744
+ %TEMP%\msys2-x86_64-latest.exe install --root C:\msys64 --confirm-command
745
+ ```
746
+
747
+ **Step 2**: Open MSYS2 MINGW64 terminal and install the toolchain:
748
+
749
+ ```bash
750
+ # Update MSYS2 packages (run twice, terminal may close and reopen)
751
+ pacman -Syu --noconfirm
752
+
753
+ # Install MinGW-w64 GCC toolchain
754
+ pacman -S --noconfirm --needed mingw-w64-x86_64-toolchain
755
+ ```
756
+
757
+ When prompted to select packages, press Enter to install all packages in the toolchain group.
758
+
759
+ **Step 3**: Add MSYS2 MinGW64 to your PATH. Add the following to your Git Bash `~/.bashrc`:
760
+
761
+ ```bash
762
+ echo 'export PATH="/c/msys64/mingw64/bin:$PATH"' >> ~/.bashrc
763
+ source ~/.bashrc
764
+ ```
765
+
766
+ #### Verification
767
+
768
+ Open Git Bash and confirm the installation:
769
+
770
+ ```bash
771
+ gcc --version
772
+ g++ --version
773
+ make --version
774
+ ```
775
+
776
+ Expected output (version numbers may vary):
777
+
778
+ ```
779
+ gcc.exe (Rev3, Built by MSYS2 project) 14.2.0
780
+ ...
781
+
782
+ g++.exe (Rev3, Built by MSYS2 project) 14.2.0
783
+ ...
784
+
785
+ GNU Make 4.4.1
786
+ ...
787
+ ```
788
+
789
+ #### Troubleshooting
790
+
791
+ **Problem**: `gcc: command not found` in Git Bash
792
+
793
+ **Solution**: Ensure MSYS2 MinGW64 bin directory is in PATH:
794
+
795
+ ```bash
796
+ export PATH="/c/msys64/mingw64/bin:$PATH"
797
+ ```
798
+
799
+ Add this line to `~/.bashrc` for persistence.
800
+
801
+ **Problem**: `pacman: command not found`
802
+
803
+ **Solution**: The `pacman` command only works in the MSYS2 terminal, not Git Bash. Open "MSYS2 MINGW64" from the Start menu to run pacman commands.
804
+
805
+ **Problem**: Compiled executables do not run or show DLL errors
806
+
807
+ **Solution**: Programs compiled with MinGW may require MinGW DLLs. Either:
808
+
809
+ 1. Distribute the required DLLs with your executable
810
+ 2. Use static linking: `gcc -static program.c -o program.exe`
811
+
812
+ **Problem**: Need Visual Studio Build Tools instead of MinGW
813
+
814
+ **Solution**: If you installed Visual Studio Build Tools (see Windows section), you can access MSVC from Git Bash by sourcing the vcvars script. Add to `~/.bashrc`:
815
+
816
+ ```bash
817
+ # Load Visual Studio environment in Git Bash
818
+ vs_env() {
819
+ eval "$(cmd //c 'C:\Program Files\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat' \&\& bash -c 'env')"
820
+ }
821
+ ```
822
+
823
+ Then run `vs_env` when you need MSVC tools.
824
+
825
+ **Problem**: Conflicts between MinGW and MSVC
826
+
827
+ **Solution**: Do not mix MinGW-compiled and MSVC-compiled object files or libraries. Choose one toolchain per project.
828
+
829
+ ---
830
+
831
+ ## Post-Installation Configuration
832
+
833
+ After installing build essential tools, you may want to configure additional settings.
834
+
835
+ ### Setting Default Compiler (Linux/macOS)
836
+
837
+ If you have multiple compiler versions installed, set the default:
838
+
839
+ ```bash
840
+ # Ubuntu/Debian - use update-alternatives
841
+ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 100
842
+ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-13 100
843
+
844
+ # macOS - Homebrew GCC is installed as gcc-13, create alias
845
+ echo 'alias gcc="gcc-13"' >> ~/.zshrc
846
+ echo 'alias g++="g++-13"' >> ~/.zshrc
847
+ ```
848
+
849
+ ### Setting Compiler Flags
850
+
851
+ Create a common flags file for consistent builds:
852
+
853
+ ```bash
854
+ # Example: ~/.compiler-flags
855
+ export CFLAGS="-O2 -Wall"
856
+ export CXXFLAGS="-O2 -Wall"
857
+ export LDFLAGS=""
858
+ ```
859
+
860
+ Source this file in your shell configuration.
861
+
862
+ ### Verifying Compiler Functionality
863
+
864
+ Test that the compiler works correctly with a simple program:
865
+
866
+ ```bash
867
+ echo 'int main() { return 0; }' > /tmp/test.c
868
+ gcc /tmp/test.c -o /tmp/test
869
+ /tmp/test && echo "Compiler works correctly"
870
+ rm /tmp/test.c /tmp/test
871
+ ```
872
+
873
+ ---
874
+
875
+ ## Common Issues
876
+
877
+ ### Issue: Native Node.js Modules Fail to Compile
878
+
879
+ **Symptoms**: `npm install` fails with `node-gyp` errors, missing compiler or make.
880
+
881
+ **Solution**: Ensure build essential tools are installed. For Node.js native modules, you also need Python:
882
+
883
+ ```bash
884
+ # Ubuntu/Debian
885
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential python3
886
+
887
+ # macOS
888
+ xcode-select -p || xcode-select --install
889
+ brew install --quiet python3
890
+
891
+ # Amazon Linux
892
+ sudo dnf groupinstall -y "Development Tools"
893
+ sudo dnf install -y python3
894
+ ```
895
+
896
+ ### Issue: Python Packages with C Extensions Fail to Install
897
+
898
+ **Symptoms**: `pip install` fails with "error: command 'gcc' failed" or similar.
899
+
900
+ **Solution**: Same as above - ensure build essential tools and Python development headers are installed:
901
+
902
+ ```bash
903
+ # Ubuntu/Debian
904
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential python3-dev
905
+
906
+ # Amazon Linux
907
+ sudo dnf groupinstall -y "Development Tools"
908
+ sudo dnf install -y python3-devel
909
+
910
+ # macOS (using Homebrew Python)
911
+ brew install --quiet python3
912
+ ```
913
+
914
+ ### Issue: Linker Cannot Find Standard Libraries
915
+
916
+ **Symptoms**: `ld: cannot find -lc` or similar linker errors.
917
+
918
+ **Solution**: Install libc development headers:
919
+
920
+ ```bash
921
+ # Ubuntu/Debian
922
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libc6-dev
923
+
924
+ # Amazon Linux
925
+ sudo dnf install -y glibc-devel
926
+ ```
927
+
928
+ ### Issue: Header Files Not Found
929
+
930
+ **Symptoms**: Compilation fails with "fatal error: stdio.h: No such file or directory" or similar.
931
+
932
+ **Solution**: Install or reinstall development headers:
933
+
934
+ ```bash
935
+ # Ubuntu/Debian
936
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y --reinstall libc6-dev linux-libc-dev
937
+
938
+ # Amazon Linux
939
+ sudo dnf reinstall -y glibc-devel kernel-headers
940
+
941
+ # macOS
942
+ sudo rm -rf /Library/Developer/CommandLineTools
943
+ xcode-select --install
944
+ ```
945
+
946
+ ### Issue: 32-bit vs 64-bit Compilation Issues
947
+
948
+ **Symptoms**: Linker errors about architecture mismatch.
949
+
950
+ **Solution**: Install multilib support or specify the correct architecture:
951
+
952
+ ```bash
953
+ # Ubuntu/Debian - install 32-bit libraries
954
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y gcc-multilib g++-multilib
955
+
956
+ # Compile as 32-bit
957
+ gcc -m32 program.c -o program
958
+
959
+ # Compile as 64-bit (default on 64-bit systems)
960
+ gcc -m64 program.c -o program
961
+ ```
962
+
963
+ ---
964
+
965
+ ## References
966
+
967
+ - [Apple Xcode Command Line Tools](https://developer.apple.com/xcode/resources/)
968
+ - [Ubuntu build-essential Package](https://packages.ubuntu.com/build-essential)
969
+ - [Debian build-essential Package](https://packages.debian.org/build-essential)
970
+ - [Raspberry Pi Documentation](https://www.raspberrypi.com/documentation/computers/os.html)
971
+ - [Amazon Linux 2023 Package Management](https://docs.aws.amazon.com/linux/al2023/ug/package-management.html)
972
+ - [Amazon Linux 2 Software Compilation Guide](https://docs.aws.amazon.com/linux/al2/ug/compile-software.html)
973
+ - [Visual Studio Build Tools Chocolatey Package](https://community.chocolatey.org/packages/visualstudio2022buildtools)
974
+ - [Visual C++ Build Tools Workload Chocolatey Package](https://community.chocolatey.org/packages/visualstudio2022-workload-vctools)
975
+ - [MSYS2 Official Website](https://www.msys2.org/)
976
+ - [GCC Documentation](https://gcc.gnu.org/onlinedocs/)
977
+ - [GNU Make Manual](https://www.gnu.org/software/make/manual/)