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