@fredlackey/devutils 0.0.17 → 0.0.19

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 (331) hide show
  1. package/README.md +32 -150
  2. package/package.json +5 -82
  3. package/bin/dev.js +0 -16
  4. package/files/README.md +0 -0
  5. package/files/claude/.claude/commands/setup-context.md +0 -3
  6. package/files/monorepos/_archive/README.md +0 -36
  7. package/files/monorepos/_legacy/README.md +0 -36
  8. package/files/monorepos/ai-docs/README.md +0 -33
  9. package/files/monorepos/apps/README.md +0 -24
  10. package/files/monorepos/docs/README.md +0 -40
  11. package/files/monorepos/packages/README.md +0 -25
  12. package/files/monorepos/research/README.md +0 -29
  13. package/files/monorepos/scripts/README.md +0 -24
  14. package/src/cli.js +0 -72
  15. package/src/commands/README.md +0 -41
  16. package/src/commands/configure.js +0 -199
  17. package/src/commands/identity.js +0 -1630
  18. package/src/commands/ignore.js +0 -247
  19. package/src/commands/install.js +0 -526
  20. package/src/commands/setup.js +0 -246
  21. package/src/commands/status.js +0 -223
  22. package/src/commands/update.js +0 -142
  23. package/src/commands/version.js +0 -100
  24. package/src/completion.js +0 -284
  25. package/src/constants.js +0 -45
  26. package/src/ignore/claude-code.txt +0 -10
  27. package/src/ignore/docker.txt +0 -18
  28. package/src/ignore/linux.txt +0 -23
  29. package/src/ignore/macos.txt +0 -36
  30. package/src/ignore/node.txt +0 -55
  31. package/src/ignore/terraform.txt +0 -37
  32. package/src/ignore/vscode.txt +0 -18
  33. package/src/ignore/windows.txt +0 -35
  34. package/src/index.js +0 -0
  35. package/src/installs/README.md +0 -399
  36. package/src/installs/adobe-creative-cloud.js +0 -546
  37. package/src/installs/adobe-creative-cloud.md +0 -605
  38. package/src/installs/appcleaner.js +0 -321
  39. package/src/installs/appcleaner.md +0 -699
  40. package/src/installs/apt-transport-https.js +0 -390
  41. package/src/installs/apt-transport-https.md +0 -678
  42. package/src/installs/atomicparsley.js +0 -642
  43. package/src/installs/atomicparsley.md +0 -795
  44. package/src/installs/aws-cli.js +0 -797
  45. package/src/installs/aws-cli.md +0 -727
  46. package/src/installs/balena-etcher.js +0 -710
  47. package/src/installs/balena-etcher.md +0 -761
  48. package/src/installs/bambu-studio.js +0 -1143
  49. package/src/installs/bambu-studio.md +0 -780
  50. package/src/installs/bash-completion.js +0 -575
  51. package/src/installs/bash-completion.md +0 -833
  52. package/src/installs/bash.js +0 -417
  53. package/src/installs/bash.md +0 -993
  54. package/src/installs/beyond-compare.js +0 -603
  55. package/src/installs/beyond-compare.md +0 -813
  56. package/src/installs/brave-browser.js +0 -968
  57. package/src/installs/brave-browser.md +0 -650
  58. package/src/installs/build-essential.js +0 -529
  59. package/src/installs/build-essential.md +0 -977
  60. package/src/installs/ca-certificates.js +0 -618
  61. package/src/installs/ca-certificates.md +0 -937
  62. package/src/installs/caffeine.js +0 -508
  63. package/src/installs/caffeine.md +0 -839
  64. package/src/installs/camtasia.js +0 -596
  65. package/src/installs/camtasia.md +0 -762
  66. package/src/installs/chatgpt.js +0 -476
  67. package/src/installs/chatgpt.md +0 -814
  68. package/src/installs/chocolatey.js +0 -456
  69. package/src/installs/chocolatey.md +0 -661
  70. package/src/installs/chrome-canary.js +0 -419
  71. package/src/installs/chrome-canary.md +0 -641
  72. package/src/installs/chromium.js +0 -667
  73. package/src/installs/chromium.md +0 -838
  74. package/src/installs/claude-code.js +0 -576
  75. package/src/installs/claude-code.md +0 -1173
  76. package/src/installs/cloudflare-warp.js +0 -900
  77. package/src/installs/cloudflare-warp.md +0 -1047
  78. package/src/installs/comet-browser.js +0 -588
  79. package/src/installs/comet-browser.md +0 -731
  80. package/src/installs/curl.js +0 -379
  81. package/src/installs/curl.md +0 -714
  82. package/src/installs/cursor.js +0 -579
  83. package/src/installs/cursor.md +0 -970
  84. package/src/installs/dbeaver.js +0 -924
  85. package/src/installs/dbeaver.md +0 -939
  86. package/src/installs/dbschema.js +0 -692
  87. package/src/installs/dbschema.md +0 -925
  88. package/src/installs/dependencies.md +0 -453
  89. package/src/installs/development-tools.js +0 -600
  90. package/src/installs/development-tools.md +0 -977
  91. package/src/installs/docker.js +0 -1029
  92. package/src/installs/docker.md +0 -1109
  93. package/src/installs/drawio.js +0 -1019
  94. package/src/installs/drawio.md +0 -795
  95. package/src/installs/elmedia-player.js +0 -347
  96. package/src/installs/elmedia-player.md +0 -556
  97. package/src/installs/ffmpeg.js +0 -889
  98. package/src/installs/ffmpeg.md +0 -852
  99. package/src/installs/file.js +0 -464
  100. package/src/installs/file.md +0 -987
  101. package/src/installs/gemini-cli.js +0 -811
  102. package/src/installs/gemini-cli.md +0 -1153
  103. package/src/installs/git.js +0 -400
  104. package/src/installs/git.md +0 -907
  105. package/src/installs/gitego.js +0 -949
  106. package/src/installs/gitego.md +0 -1172
  107. package/src/installs/go.js +0 -931
  108. package/src/installs/go.md +0 -958
  109. package/src/installs/google-antigravity.js +0 -913
  110. package/src/installs/google-antigravity.md +0 -1075
  111. package/src/installs/google-chrome.js +0 -833
  112. package/src/installs/google-chrome.md +0 -862
  113. package/src/installs/gpg.js +0 -480
  114. package/src/installs/gpg.md +0 -1056
  115. package/src/installs/homebrew.js +0 -1033
  116. package/src/installs/homebrew.md +0 -988
  117. package/src/installs/imageoptim.js +0 -968
  118. package/src/installs/imageoptim.md +0 -1119
  119. package/src/installs/installers.json +0 -4032
  120. package/src/installs/installers.json.tmp +0 -3953
  121. package/src/installs/jq.js +0 -400
  122. package/src/installs/jq.md +0 -809
  123. package/src/installs/keyboard-maestro.js +0 -719
  124. package/src/installs/keyboard-maestro.md +0 -825
  125. package/src/installs/kiro.js +0 -864
  126. package/src/installs/kiro.md +0 -1015
  127. package/src/installs/latex.js +0 -789
  128. package/src/installs/latex.md +0 -1095
  129. package/src/installs/lftp.js +0 -356
  130. package/src/installs/lftp.md +0 -907
  131. package/src/installs/lsb-release.js +0 -346
  132. package/src/installs/lsb-release.md +0 -814
  133. package/src/installs/messenger.js +0 -847
  134. package/src/installs/messenger.md +0 -900
  135. package/src/installs/microsoft-office.js +0 -568
  136. package/src/installs/microsoft-office.md +0 -760
  137. package/src/installs/microsoft-teams.js +0 -801
  138. package/src/installs/microsoft-teams.md +0 -886
  139. package/src/installs/moom.js +0 -326
  140. package/src/installs/moom.md +0 -570
  141. package/src/installs/node.js +0 -904
  142. package/src/installs/node.md +0 -1153
  143. package/src/installs/nordpass.js +0 -716
  144. package/src/installs/nordpass.md +0 -921
  145. package/src/installs/nordvpn.js +0 -892
  146. package/src/installs/nordvpn.md +0 -1052
  147. package/src/installs/nvm.js +0 -995
  148. package/src/installs/nvm.md +0 -1057
  149. package/src/installs/ohmyzsh.js +0 -529
  150. package/src/installs/ohmyzsh.md +0 -1094
  151. package/src/installs/openssh.js +0 -804
  152. package/src/installs/openssh.md +0 -1056
  153. package/src/installs/pandoc.js +0 -662
  154. package/src/installs/pandoc.md +0 -1036
  155. package/src/installs/parallels-desktop.js +0 -431
  156. package/src/installs/parallels-desktop.md +0 -446
  157. package/src/installs/pinentry.js +0 -510
  158. package/src/installs/pinentry.md +0 -1142
  159. package/src/installs/pngyu.js +0 -869
  160. package/src/installs/pngyu.md +0 -896
  161. package/src/installs/postman.js +0 -799
  162. package/src/installs/postman.md +0 -940
  163. package/src/installs/procps.js +0 -425
  164. package/src/installs/procps.md +0 -851
  165. package/src/installs/safari-tech-preview.js +0 -374
  166. package/src/installs/safari-tech-preview.md +0 -533
  167. package/src/installs/sfnt2woff.js +0 -658
  168. package/src/installs/sfnt2woff.md +0 -795
  169. package/src/installs/shellcheck.js +0 -481
  170. package/src/installs/shellcheck.md +0 -1005
  171. package/src/installs/slack.js +0 -741
  172. package/src/installs/slack.md +0 -865
  173. package/src/installs/snagit.js +0 -585
  174. package/src/installs/snagit.md +0 -844
  175. package/src/installs/software-properties-common.js +0 -372
  176. package/src/installs/software-properties-common.md +0 -805
  177. package/src/installs/spotify.js +0 -877
  178. package/src/installs/spotify.md +0 -901
  179. package/src/installs/studio-3t.js +0 -823
  180. package/src/installs/studio-3t.md +0 -918
  181. package/src/installs/sublime-text.js +0 -804
  182. package/src/installs/sublime-text.md +0 -914
  183. package/src/installs/superwhisper.js +0 -706
  184. package/src/installs/superwhisper.md +0 -630
  185. package/src/installs/tailscale.js +0 -745
  186. package/src/installs/tailscale.md +0 -1100
  187. package/src/installs/tar.js +0 -389
  188. package/src/installs/tar.md +0 -946
  189. package/src/installs/termius.js +0 -798
  190. package/src/installs/termius.md +0 -844
  191. package/src/installs/terraform.js +0 -779
  192. package/src/installs/terraform.md +0 -899
  193. package/src/installs/tfenv.js +0 -778
  194. package/src/installs/tfenv.md +0 -1091
  195. package/src/installs/tidal.js +0 -771
  196. package/src/installs/tidal.md +0 -864
  197. package/src/installs/tmux.js +0 -346
  198. package/src/installs/tmux.md +0 -1030
  199. package/src/installs/tree.js +0 -411
  200. package/src/installs/tree.md +0 -833
  201. package/src/installs/unzip.js +0 -460
  202. package/src/installs/unzip.md +0 -879
  203. package/src/installs/vim.js +0 -421
  204. package/src/installs/vim.md +0 -1040
  205. package/src/installs/vlc.js +0 -821
  206. package/src/installs/vlc.md +0 -927
  207. package/src/installs/vscode.js +0 -843
  208. package/src/installs/vscode.md +0 -1002
  209. package/src/installs/wget.js +0 -420
  210. package/src/installs/wget.md +0 -791
  211. package/src/installs/whatsapp.js +0 -729
  212. package/src/installs/whatsapp.md +0 -854
  213. package/src/installs/winpty.js +0 -352
  214. package/src/installs/winpty.md +0 -620
  215. package/src/installs/woff2.js +0 -553
  216. package/src/installs/woff2.md +0 -977
  217. package/src/installs/wsl.js +0 -572
  218. package/src/installs/wsl.md +0 -699
  219. package/src/installs/xcode-clt.js +0 -520
  220. package/src/installs/xcode-clt.md +0 -351
  221. package/src/installs/xcode.js +0 -560
  222. package/src/installs/xcode.md +0 -573
  223. package/src/installs/yarn.js +0 -824
  224. package/src/installs/yarn.md +0 -1074
  225. package/src/installs/yq.js +0 -654
  226. package/src/installs/yq.md +0 -944
  227. package/src/installs/yt-dlp.js +0 -701
  228. package/src/installs/yt-dlp.md +0 -946
  229. package/src/installs/yum-utils.js +0 -297
  230. package/src/installs/yum-utils.md +0 -648
  231. package/src/installs/zoom.js +0 -759
  232. package/src/installs/zoom.md +0 -884
  233. package/src/installs/zsh.js +0 -455
  234. package/src/installs/zsh.md +0 -1008
  235. package/src/scripts/README.md +0 -617
  236. package/src/scripts/STATUS.md +0 -208
  237. package/src/scripts/afk.js +0 -411
  238. package/src/scripts/backup-all.js +0 -746
  239. package/src/scripts/backup-source.js +0 -727
  240. package/src/scripts/brewd.js +0 -389
  241. package/src/scripts/brewi.js +0 -520
  242. package/src/scripts/brewr.js +0 -527
  243. package/src/scripts/brews.js +0 -477
  244. package/src/scripts/brewu.js +0 -504
  245. package/src/scripts/c.js +0 -201
  246. package/src/scripts/ccurl.js +0 -341
  247. package/src/scripts/certbot-crontab-init.js +0 -504
  248. package/src/scripts/certbot-init.js +0 -657
  249. package/src/scripts/ch.js +0 -355
  250. package/src/scripts/claude-danger.js +0 -268
  251. package/src/scripts/clean-dev.js +0 -435
  252. package/src/scripts/clear-dns-cache.js +0 -541
  253. package/src/scripts/clone.js +0 -435
  254. package/src/scripts/code-all.js +0 -437
  255. package/src/scripts/count-files.js +0 -211
  256. package/src/scripts/count-folders.js +0 -211
  257. package/src/scripts/count.js +0 -264
  258. package/src/scripts/d.js +0 -219
  259. package/src/scripts/datauri.js +0 -389
  260. package/src/scripts/delete-files.js +0 -380
  261. package/src/scripts/docker-clean.js +0 -426
  262. package/src/scripts/dp.js +0 -442
  263. package/src/scripts/e.js +0 -390
  264. package/src/scripts/empty-trash.js +0 -513
  265. package/src/scripts/evm.js +0 -444
  266. package/src/scripts/fetch-github-repos.js +0 -456
  267. package/src/scripts/get-channel.js +0 -345
  268. package/src/scripts/get-course.js +0 -399
  269. package/src/scripts/get-dependencies.js +0 -306
  270. package/src/scripts/get-folder.js +0 -799
  271. package/src/scripts/get-tunes.js +0 -426
  272. package/src/scripts/get-video.js +0 -367
  273. package/src/scripts/git-backup.js +0 -577
  274. package/src/scripts/git-clone.js +0 -493
  275. package/src/scripts/git-pup.js +0 -319
  276. package/src/scripts/git-push.js +0 -396
  277. package/src/scripts/h.js +0 -622
  278. package/src/scripts/hide-desktop-icons.js +0 -499
  279. package/src/scripts/hide-hidden-files.js +0 -538
  280. package/src/scripts/install-dependencies-from.js +0 -456
  281. package/src/scripts/ips.js +0 -663
  282. package/src/scripts/iso.js +0 -370
  283. package/src/scripts/killni.js +0 -577
  284. package/src/scripts/ll.js +0 -467
  285. package/src/scripts/local-ip.js +0 -325
  286. package/src/scripts/m.js +0 -524
  287. package/src/scripts/map.js +0 -309
  288. package/src/scripts/mkd.js +0 -351
  289. package/src/scripts/ncu-update-all.js +0 -457
  290. package/src/scripts/nginx-init.js +0 -718
  291. package/src/scripts/npmi.js +0 -382
  292. package/src/scripts/o.js +0 -511
  293. package/src/scripts/org-by-date.js +0 -338
  294. package/src/scripts/p.js +0 -224
  295. package/src/scripts/packages.js +0 -330
  296. package/src/scripts/path.js +0 -225
  297. package/src/scripts/ports.js +0 -597
  298. package/src/scripts/q.js +0 -305
  299. package/src/scripts/refresh-files.js +0 -394
  300. package/src/scripts/remove-smaller-files.js +0 -516
  301. package/src/scripts/rename-files-with-date.js +0 -533
  302. package/src/scripts/resize-image.js +0 -539
  303. package/src/scripts/rm-safe.js +0 -669
  304. package/src/scripts/s.js +0 -540
  305. package/src/scripts/set-git-public.js +0 -365
  306. package/src/scripts/show-desktop-icons.js +0 -475
  307. package/src/scripts/show-hidden-files.js +0 -472
  308. package/src/scripts/tpa.js +0 -280
  309. package/src/scripts/tpo.js +0 -280
  310. package/src/scripts/u.js +0 -505
  311. package/src/scripts/vpush.js +0 -437
  312. package/src/scripts/y.js +0 -283
  313. package/src/utils/README.md +0 -95
  314. package/src/utils/common/apps.js +0 -143
  315. package/src/utils/common/display.js +0 -157
  316. package/src/utils/common/network.js +0 -185
  317. package/src/utils/common/os.js +0 -294
  318. package/src/utils/common/package-manager.js +0 -301
  319. package/src/utils/common/privileges.js +0 -138
  320. package/src/utils/common/shell.js +0 -216
  321. package/src/utils/macos/apps.js +0 -228
  322. package/src/utils/macos/brew.js +0 -315
  323. package/src/utils/ubuntu/apt.js +0 -307
  324. package/src/utils/ubuntu/desktop.js +0 -292
  325. package/src/utils/ubuntu/snap.js +0 -344
  326. package/src/utils/ubuntu/systemd.js +0 -286
  327. package/src/utils/windows/choco.js +0 -465
  328. package/src/utils/windows/env.js +0 -246
  329. package/src/utils/windows/registry.js +0 -269
  330. package/src/utils/windows/shell.js +0 -240
  331. package/src/utils/windows/winget.js +0 -489
@@ -1,977 +0,0 @@
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/)