Install Xcode on MacOS Mojave and test with Virtualbox on Windows 10 2020Can we install MacOS with Virtualbox on Windows 10 to develop iOS apps?- Yessssss!!y. Flutter depends on Xcode if you’re on a Mac. But if you aren’t on the latest release of MacOS, then you’ll run into wall. Just in case you’re stuck in Catalina like me, you’ll need to install Xcode 12.3.
To get the latest features and maintain the security, stability, compatibility, and performance of your Mac, it's important to keep your software up to date. Apple recommends that you always use the latest macOS that is compatible with your Mac.
Learn how to upgrade to macOS Big Sur, the latest version of macOS.
Check compatibility
The version of macOS that came with your Mac is the earliest version it can use. For example, if your Mac came with macOS Big Sur, it will not accept installation of macOS Catalina or earlier.
If a macOS can't be used on your Mac, the App Store or installer will let you know. For example, it might say that it's not compatible with this device or is too old to be opened on this version of macOS. To confirm compatibility before downloading, check the minimum hardware requirements:
- macOS Catalina 10.15 hardware requirements
- macOS Mojave 10.14 hardware requirements
- macOS High Sierra 10.13 hardware requirements
- macOS Sierra 10.12 hardware requirements
- OS X El Capitan 10.11 hardware requirements
- OS X Yosemite 10.10 hardware requirements
Download macOS using Safari on your Mac
Safari uses these links to find the old installers in the App Store. After downloading from the App Store, the installer opens automatically.
- macOS Catalina 10.15 can upgrade Mojave, High Sierra, Sierra, El Capitan, Yosemite, Mavericks
- macOS Mojave 10.14 can upgrade High Sierra, Sierra, El Capitan, Yosemite, Mavericks, Mountain Lion
- macOS High Sierra 10.13 can upgrade Sierra, El Capitan, Yosemite, Mavericks, Mountain Lion
Safari downloads the following older installers as a disk image named InstallOS.dmg or InstallMacOSX.dmg. Open the disk image, then open the .pkg installer inside the disk image. It installs an app named Install [Version Name]. Open that app from your Applications folder to begin installing the operating system.
- macOS Sierra 10.12 can upgrade El Capitan, Yosemite, Mavericks, Mountain Lion, or Lion
- OS X El Capitan 10.11 can upgrade Yosemite, Mavericks, Mountain Lion, Lion, or Snow Leopard
- OS X Yosemite 10.10can upgrade Mavericks, Mountain Lion, Lion, or Snow Leopard
After figuring out a way around the massive breaking change introduced by Xcode 11, it's now time to install Xdebug back on MacOS Catalina.
Update from January 6th 2021:
Using MacOS Big Sur? This solution should work for you too. But since Apple Deprecated PHP in MacOS Big Sur, you should probably rely on Homebrew now.
Macos Catalina Xcode Version 1.12
Update from June 30th 2020:
After some new investigation while trying to upgrade to a newer version of xdebug, I now believe most of the instructions in this post are not necessary. Before doing anything, you should check if xdebug.so
already exists in /usr/lib/php/extensions/no-debug-non-zts-20180731/
, which I believe is there by default (let me know if otherwise). If it does exist, you could skip to the Enabled support in PHP portion of this post.
Note that building xdebug from source code and actually trying to use that version of xdebug.so
(for example by referencing the built file in xdebug/module/xdebug.so
after using make install
) with the build-in PHP should end up in a 'code signature' error. As described here and here, even after signing the binary, MacOS won't allow system binaries to interact with non-system binaries for security reasons. The only real solution to use a custom version of xdebug would be to compile and use you own instance of PHP instead of the build in one.
Long story short, Apple decided to nuke /usr/include
in MacOS Catalina, which has been the default location for C header file for ever in UNIX systems. Trying to install through PEAR / PECL will return an error as the compiler will look for necessary headers file in /usr/include
. So the solution is to compile Xdebug manually, manually specifying the actual location of the header files, which are still provided by Xcode, just at a different location.
Xcode
The first step is to get Xcode from the App Store.
Once Xcode installed, we have to get the command line tools :
You might need to actually open Xcode at this point to finish installation and accept terms and conditions, especially if the previous command fails.
Finally, make sure the SDK is found. If the path you get differs from the one bellow, you might need to edit the path accordingly later on:
Manually Compiling Xdebug
Getting source
Let's compile 2.7.2, getting the source code from git. Alternatively, you can download the source from Xdebug site.
phpize
Next we need to make a copy phpize
so we can edit the include path :
Find this line :
...and replace it with this line :
Run phpize
:
You should now see something like this :
Macos Catalina Xcode Version 8
Configure & build
We can now configure :
...and run make using our custom SDK location defined as compiler flags. I used a variable to store the path to the SDK so it's easier to edit if it changes :
You might see some warning, just ignore it for now. Finally, we'll need to run :
Again, this command will fail because it can't move the extension to the right place. SIP will prevent it. But no worries, we'll take care of that manually at the next step. make install
is still required as it will sign the *.so
file.
Makefile
to see which directory to include in your custom CPPFLAGS
.Enabled support in PHP
Once make install
has been run, we can move the executable somewhere safe. I use /usr/local/php/extensions
.
Then we edit the PHP configuration to enable Xdebug. Simply edit php.ini
:
And we add the following at the bottom :
Restart built in server to be sure :
And finally test everything went fine :
Macos Catalina Xcode Versions
If the above command returns nothing, then Xdebug is not available on your install. Go back the steps to find out what's missing.
Comments are closed.