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