@fredlackey/devutils 0.0.18 → 0.1.0

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