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