Xcode Macos Download

2/13/2022by admin

Xcode is the tool developers use to build apps for the Apple ecosystem – MacOS, iOS, and all things Apple. This guide will walk you through how to successfully install Xcode onto your Mac, from start to finish. Here are some handy tips to know before you get started: Xcode only. This version is preceded by Mac OS X 10.4 Tiger and succeeded by Mac OS X snow leopard. It is the first operating system that has open-source BSD to be certified as fully UNIX cooperative. Download Xcode Dmg File For Mac Free.


The new Apple Music app is the ultimate music streaming experience on Mac.1 Explore a library of 50 million songs, discover new artists and tracks, find the perfect playlist, download and listen.

Learn about the key features available in Xcode, the integrated development environment for building apps for Mac, iPhone, iPad, Apple Watch, and Apple TV. For detailed information on updates in the latest released versions, including each beta release, see the Xcode Release Notes.

Xcode 12

  1. You can now submit apps built with Xcode 12.5 beta 3 using the SDK for iOS 14.5 beta 3, tvOS 14.5 beta 3, watchOS 7.4 beta 3 for internal and external testing.
  2. Aimed at consumers and professionals alike, Mac OS X aimed to combine the stability, reliability, and security of Unix with the ease of use afforded by an overhauled user interface. To aid users in migrating from Mac OS 9, the new operating system allowed the use of OS 9 applications within Mac OS X via the Classic Environment.

Xcode 12 includes Swift 5.3 and SDKs for iOS 14,iPadOS 14,tvOS 14,watchOS 7, and macOS Big Sur.

Universal apps

  • A single macOS Universal app includes native binaries for Intel-based Macs and Apple Silicon Macs
  • “Any Mac” destination in the toolbar builds a Universal app, even on Intel-based Macs
  • Standard Architectures build setting defaults to Universal, and Xcode offers to upgrade your project if needed
  • Run and debug the Intel binary within a Universal app by selecting “My Mac (Rosetta)” on a Developer Transition Kit (DTK) from the Universal App Quick Start Program

NOTE: Xcode 12.2 adds support for macOS Big Sur and Universal apps.

Refined user interface for macOS Big Sur

  • Document tabs open any type of document, including logs, asset catalogs, and UI files, in a lightweight editor tab
  • Toolbar, icons, and sidebar designs match the beautiful new aesthetic of macOS Big Sur
  • Navigator fonts track the size of the system setting or can be manually set to a custom size
  • Organizer is completely redesigned and reports new app metrics, such as hitches in animation and scrolling

Swift and SwiftUI

  • App lifecycle in SwiftUI enables entire apps to be written completely in SwiftUI for iOS, iPadOS, and macOS
  • WidgetKit built on SwiftUI makes it easy to share code for widgets that run on iOS, iPadOS, and macOS
  • SwiftUI performance is improved throughout, and new Lazy views efficiently handle enormous data sets
  • Multiplatform templates make it easy to share SwiftUI code across all Apple platforms, customized for each
  • SwiftUI Views can be turned into reusable components that appear in the Xcode library and in code completions
  • Swift Package Manager supports resources and localizations, making it great for sharing SwiftUI components
  • Improved Swift language diagnostics make it much easier to understand coding mistakes, especially in SwiftUI code

Mac Catalyst

  • Mac idiom displays your app’s user interface in 100% native Mac size and scale for total customization
  • Additional frameworks and controls are available, including HomeKit and AVCapture
  • Keyboard APIs and OS integration make it easier to completely control your app with the keyboard
  • Apps built with Mac Catalyst automatically inherit the new look and feel of macOS Big Sur

Other improvements

  • App clips target creates a small, focused experience from your app that installs quickly
  • StoreKit testing framework and transaction manager make it easy to test and debug in-app purchases

Xcode 11

Xcode 11 includes Swift 5.1 and SDKs for iOS 13,tvOS 13,watchOS 6, and macOS Catalina 10.15

This release adds many features to bring your apps to even more Apple platforms. SwiftUI is an innovative new user interface framework with a declarative Swift syntax that is easy to read, and natural to write. Amazing new preview tools let you manually type SwiftUI code, or modify the UI with rich design tools, with code and design always in sync. Get a head start on your Mac app by selecting the “Mac” checkbox in the project settings of your existing iPad app. And with support for Swift packages in Xcode 11, you can share code among all your apps, or make use of packages created by the community.


Xcode 11 includes SwiftUI, a new Swift framework and accompanying design tools that empower a whole new way to build user interfaces. Design tools in Xcode make it as easy as drag-and-drop to construct or edit your interface, all while instantly editing the exact same Swift code file you can also edit by hand. Xcode is constantly running your real app interface live to see how it behaves directly in the design canvas, or you can instantly preview your app on an attached device.

SwiftUI includes:

  • Design tools read and write the same code you edit by hand for a single source of truth
  • Declarative syntax defines your user interface as easy-to-read Swift code
  • Animations are built using simple commands that describe the action you want to see
  • Library of controls and modifiers make it easy to design and build complex interfaces
  • Share common UI code across all Apple platforms, and add custom experiences for each OS
  • Previews show an exact rendering across various device types and accessibility settings
  • Interact with your interface live in the design canvas, or on an attached device
  • Hot-swap your edits into a live view of your app to instantly see and interact with changes

SwiftUI requires iOS 13,watchOS 6,tvOS 13, or macOS Catalina. To use the SwiftUI design canvas Xcode 11 must running on macOS Catalina.

Bring your iPad app to the Mac

Xcode Macos Download

It is easy to bring your existing iPad app to millions of Mac users. When you click a single checkbox Xcode can transform your iPad app into a true native Mac app that performs great.

  • Clicking a checkbox in your iPad project adds a native Mac app, built with the macOS SDK
  • Use a single code base for iPhone, iPad, and Mac versions of your app, and customize parts of your app for Mac
  • Add new SwiftUI code to the existing shared UIKit code
  • Submit to the Mac App Store directly from Xcode, or notarize for outside distribution

Swift and Swift Packages

  • Swift packages are supported throughout Xcode workflows — build, debug, SCM, and more
  • Easily use Swift packages published on GitHub, Bitbucket, GitLab, or your own hosts
  • Xcode automatically retrieves and manages packages based on dependency analysis
  • Create your own packages to share code among your own apps, or to publish for the community

iOS dark mode

  • Switch between light and dark mode instantly while developing and debugging
  • Asset catalog makes it easy to control images and colors for dark and light mode


  • Editor minimap gives a bird’s eye view of your code so you can quickly jump to any section
  • Each editor view or tab has its own preview, assistant, or other complementary views
  • Split any editor pane to layout your workspace exactly as you want

Other improvements in Xcode 11

  • Build stand-alone watchOS apps with a much faster debugging experience
  • Simulator launches much faster and uses the GPU to accelerate Metal code
  • Test plans give you greater control of your test harness with sharable results bundles
  • Automatically generate localized screenshots using UI tests as part of your test plan
  • Source control adds support for stash and cherry pick operations
  • Debug your app under simulated device conditions such as a slow network or thermal warnings
  • Metrics tab in the Organizer shows how efficiently your app runs on customer devices

Xcode 10.2.1

Xcode 10.2 includes Swift 5 and SDKs for iOS 12.2,tvOS 12.2,watchOS 5.2, and macOS Mojave 10.14.4.

Swift 5

  • Swift 5 runtime is included as part of the OS in the latest Apple platform releases
  • App Store thins the Swift runtime from your apps for faster downloads to devices running latest OS
  • SIMD vector types are built into the standard library
  • String literals have an enhanced syntax that makes them easier to read and write
  • New Result enum type makes it easier to handle errors across asynchronous operations

Other enhancements in Xcode

  • Debugger console has a new frame variable command alias “v” that is faster than “p” or “po”
  • Playgrounds include various stability improvements and additional memory safety checks

Xcode 10.2.1 fixes a build time issue in large Swift projects, and includes additional bug fixes.

Xcode 10.1

Xcode 10.1 includes Swift 4.2.1 and SDKs for iOS 12.1,watchOS 5.1,tvOS 12.1, and macOS Mojave.

Xcode 10

Xcode 10 looks amazing in combination with Dark Mode in macOS Mojave, and makes it easy for you to adopt the new look in your macOS apps as well. Xcode 10 beta includes Swift 4.2 and beta SDKs for iOS 12,watchOS 5,tvOS 12, and macOS Mojave.

Dark Mode Interface and Mac App Support

  • All-new dark appearance throughout Xcode and Instruments
  • Asset catalogs add dark and light variants for custom colors and image assets
  • Interface Builder switches between dark and light previews of your interface
  • Debug your Mac apps in dark or light variants without changing OS settings

Source Control

  • Changes in the local repository or upstream on a shared server are highlighted directly within the editor. At a glance, you’ll see:
  • Changes made in your code.
  • Changes not yet pushed to the shared repository.
  • Upstream changes others have made.
  • Conflicts you should address before committing.
  • Support for cloud-hosted and self-hosted Git server offerings from Atlassian Bitbucket, as well as GitLab to go along with existing GitHub support.
  • Xcode offers to rebase your changes when pulling the latest version of code from your repository.
  • SSH keys are generated if needed, and uploaded to service providers for you.

Editor Enhancements

  • Place multiple cursors in your code editor to make many changes at once.
  • Code folding ribbon can now hide any code block surrounded by braces.
  • Over-scroll makes it easy to center the last lines of code in the middle of your screen.

Playgrounds Built for Machine Learning

  • New REPL-like model reruns your existing playground code instantly.
  • Run your code up to any specific line, or type shift-return to run the code you just added.
  • Import the Create ML framework to interactively train new models, and then write code to test the model right in the playground. When finished, drag the model into your app.

Testing and Debugging

  • Debugging symbols are downloaded from a new device five times faster than before.
  • Xcode will spawn a collection of identical Simulators to take advantage of your multi-core Mac, and fan tests out to run in parallel, completing your test suite many times faster.
  • Run tests in random or linear order.
  • Instruments automatically show OSLog signposts you add into your code.
  • Build and share your own custom instruments package to provide unique data visualization and analysis for your own code.
  • Memory debugger uses a compact layout to make it easier to investigate your memory graph.
  • Metal shader debugger lets you easily inspect the execution of your vertex, fragment, compute, and tile shader code.
  • Metal dependency viewer provides a detailed graph of how resources are used in your Metal-based app.

Build Performance

  • New build system enabled by default with improved performance throughout.
  • Swift compiler builds each individual file significantly faster.
  • Large Swift projects build for debugging dramatically faster when using the incremental build setting.

Xcode 9.3

Xcode 9.3 includes Swift 4.1 and SDKs for iOS 11.3,watchOS 4.3,tvOS 11.3, and macOS High Sierra 10.13.4

  • New Energy tab in the Organizer window includes logs generated when your app consumes too much power
  • Swift build tasks and other commands are run in parallel more often to improve build performance
  • Swift compiler adds new code size optimization, enabled with the -Osize build setting
  • Quick access to callers is available by clicking on a symbol while holding the command key
  • Asset catalogs support AR Reference Image files that can be detected in the real-world by your ARKit apps
  • New xccov command line tool lets you inspect code coverage reports
  • Improved source editor performance when working on extremely large files

Xcode 9.2

Xcode 9.2 includes Swift 4 and SDKs for iOS 11.2,watchOS 4.2,tvOS 11.2, and macOS High Sierra 10.13.

  • Updates to the latest platform SDKs

Xcode 9.1

Xcode 9.1 includes Swift 4 and SDKs for iOS 11,watchOS 4,tvOS 11, and macOS High Sierra 10.13

  • Fixes an issue in Simulator that impacted the performance of OpenGL ES and maps
  • Improves support for iPhone X

Xcode 9.0.1

Xcode 9.0.1 includes Swift 4 and SDKs for iOS 11,watchOS 4,tvOS 11, and macOS High Sierra 10.13

  • Simulator improvements for iPhone X
  • Fixes a problem where the Test Navigator could become out of sync with available tests

Xcode 9.0

Xcode 9 includes Swift 4 and SDKs for iOS 11,watchOS 4,tvOS 11, and macOS High Sierra 10.13

  • Refactoring makes it easy to modify the structure of Swift, Objective-C, C, and C++ code
  • Code editor is blazingly fast and responsive and adds native support for Markdown syntax
  • Fix-its apply multiple improvements to your code in a single click, and can even add required protocol methods
  • New Source Control navigator and integrated GitHub accounts make it easy to manage code across a team
  • Wireless installation and debugging for iOS and tvOS apps on devices over the network
  • Simulator looks and behaves more like a real device and can simulate multiple devices at a time
  • iOS playground templates create documents that work in both Xcode and Swift Playgrounds on iPad
  • Find navigator is incredibly fast and results show up instantly
  • Project navigator automatically keeps files and groups in sync with Finder and source control
  • Xcode Server no longer requires macOS Server and can be fully configured in Xcode preferences
  • Next-generation build system improves reliability and performance when building many projects (optionally enabled)
  • Swift 4 compiler can also build Swift 3 code to enable staged migration, one module at a time
  • Latest SDKs include the Core ML framework for machine learning and ARKit for augmented reality

Main Page - Current Development - Developer FAQ - Tools - Related Projects - Project Ideas - Summer Projects

Installation - Troubleshooting - User FAQ - HOWTOs - Samples - Models - Education - Contributed Code - Papers

This is a detailed installation guide for ns-3. Basic installation instructions can be found in the ns-3 tutorial (see Getting Started chapter).

  • 1Supported platforms
    • 1.2Integrated development environment support
  • 2Prerequisites
    • 2.1Linux
  • 3Installation
    • 3.2Manual installation
  • 4Building ns-3 with build.py
  • 8Obsolete information

Supported platforms

ns-3 is primarily developed on GNU/Linux and macOS platforms, and the minimal requirements to run basic simulations are a C++ compiler; either g++ or clang++ compiler, and Python (version 3) interpreter. The below instructions are per-platform instructions for supplemental packages that enable optional features of ns-3 or companion tools.

Operating system and compiler support

ns-3 is supported and currently tested on the following primary platforms:

  1. Linux (x86 and x86_64): gcc/g++ versions 4.9 and above
    1. Note: If you are using RHEL or Centos, you will likely need to install a more up-to-date compiler than the default; search for how to enable 'software collections' or 'devtoolset' on these distributions. Other Linux distributions typically have a suitable default compiler (at least version 4.9).
  2. MacOS Apple LLVM: version 8.0.0 and above (version 7.0.0 may work)
  3. FreeBSD and Linux (x86_64): clang/LLVM version 3.9 and above (older versions down to 3.3 may work)

The minimum Python version supported is currently version 3.5 or greater (major version 3).

By supported, we mean that the project tries to support most or all of the build options on these platforms unless there is a good reason to exclude the option; and at least the debug build will compile. If you intend to do serious work using ns-3, and are forced by circumstances to use a Windows platform, consider virtualization of a popular Linux platform or using Windows Subsystem for Linux.

The following platforms are lightly supported:

  • Windows Visual Studio 2012 (presently being upgraded)

Some aspects of ns-3 depend on Unix (or specifically Linux) support, such as the emulation or TapBridge features, and those components are not enabled on the Windows or MacOS versions cited above.

Additional maintainers are invited to make more platforms, compilers and environments supported.

Xcode Macos Download

Integrated development environment support


The Eclipse IDE is not an officially supported platform, but some developers use it and have compiled a HOWTO.


NetBeans is not officially supported either, but there is a HOWTO as well.


Same rule applies to Qt Creator; it's not officially supported, but there are developers that use it and HOWTO is available.

Support for optional features

There are a few options that are not enabled by default and are not available on all platforms. At the end of the configuration process (explained below), the status of these options are shown as detected by a waf script:

Generally if the platform is missing some requirement for an option it is marked as 'not enabled.' Note that 'disabled by user request' will be shown when the user explicitly disables a feature (such as '--disable-python'); and if a feature defaults to disabled this will also be noted (e.g., option --enable-sudo not selected).

The table below is meant to help sort out the different features and on which platforms they are supported. This table reflects the status as of ns-3.15 and may have changed since then:

Option status
Option Linux FreeBSD Mac OS X
Optimized build Y Y Y
Python bindings Y Y Y
Threading Y Y Y
Real-time simulator Y Y N
Emulated Net Device Y N N
Tap Bridge Y N N
Network simulation cradle Y1 ? N
Static builds Y Y Y

Key:Y = supported; N = not supported; ? = unknown; dev = support in ns-3-dev (next release)


  1. NSC works best with gcc-3.4 or gcc-4.2 or greater series. Try to avoid using gcc-4.0 and gcc-4.1 series; some build problems have been found with these versions of compilers.


The core of ns-3 requires a gcc/g++ installation of 4.9 or greater (Linux), or a recent version of clang compiler (OS X, Linux, or BSD), and Python 3.5 or greater. As mentioned above, different options require additional support. This is a list of packages (for Debian/Ubuntu systems) that are needed to support different ns-3 options. Note that other distributions (e.g., Fedora, FreeBSD) may have different package names or capitalization (e.g. ImageMagik). Installation should be similar for Red Hat/Fedora based systems, with 'yum' replacing 'apt-get', but some differences exist, so below is a guide for both Ubuntu (should generally apply to Debian) and Fedora/RedHat-based systems:



Note: CentOS version 6 series (currently 6.8) requires an upgrade of both gcc and Python to meet current ns-3 requirements. See these instructions if you need to upgrade: https://www.nsnam.org/bugzilla/show_bug.cgi?id=2667#c1

The below instructions are based on a CentOS 6.6 install in November 2014; other RedHat/Fedora-based installs are likely similar.

  • minimal requirements for C++ (release): This is the minimal set of packages needed to run ns-3 C++ programs from a released tarball.
  • minimal requirements for Python (release): Python development headers are necessary to enable the Python bindings (for writing ns-3 programs from Python):

The following additional packages add functionality to the build or documentation.

  • The netanim animator requires Qt5 development packages:
  • Mercurial is needed to work with ns-3 development repositories.
  • Doxygen and related inline documentation:
  • The ns-3 manual and tutorial are written in reStructuredText for Sphinx (doc/tutorial, doc/manual, doc/models), and figures typically in dia:
  • MPI-based parallel, distributed simulation support requires openmpi:
  • To read pcap packet traces generated by ns-3
  • Database support for statistics
  • Xml-based version of the config store (requires libxml2 >= version 2.7)
  • Support for utils/check-style.py style check program
  • Support for openflowswitch requires libxml2, if not installed above
  • Support for ns-3-pyviz visualizer

This is a bit more involved due to lack of package support in the standard repositories.

Some additional packages are needed (goocanvas and pygoocanvas). It is suggested to enable the RPMForge repo as described here: http://wiki.centos.org/AdditionalResources/Repositories/RPMForge. Then, try this:

Then obtain the RPM for pygoocanvas and pygoocanvas-devel from here: http://li.nux.ro/download/nux/dextop/el6/x86_64/

Or, if you prefer, build pygoocanvas from source code found here: https://wiki.gnome.org/Projects/PyGoocanvas

Note, if you perform this install successfully on a CentOS server that does not have a desktop installed (i.e. a CentOS 'minimal install'), you will still not be able to see pyviz enabled; you will see the configuration report:

because the Python gtk module opens the display upon import.

  • Git is needed to fetch click modular routing and pygccxml
  • An optional but recommended package (for improving some wireless model fidelity) is GNU scientific library:
  • A GTK-based configuration system
  • Debugging:


The following list of packages should be accurate for Ubuntu 19.04 release; other releases or other Debian-based systems may slightly vary. Ubuntu 16.04 LTS release is probably the oldest release that is known to work with recent ns-3 releases.

Note: As of ns-3.30 release (August 2019), ns-3 uses Python 3 by default, but earlier releases depend on Python 2 packages, and at least a Python 2 interpreter is recommended. If working with an earlier release, one may in general substitute 'python' for 'python3' in the below (e.g. install 'python-dev' instead of 'python3-dev').

  • minimal requirements for C++ users (release): This is the minimal set of packages needed to run ns-3 from a released tarball.
  • minimal requirements for Python API users (release 3.30, 3.31, and ns-3-dev): This is the minimal set of packages needed to work with Python bindings from a released tarball.
  • minimal requirements for Python (development): For use of ns-3-allinone repository (cloned from Git), additional packages are needed to fetch and successfully install pybindgen and netanim.
  • Netanim animator: qt5 development tools are needed for Netanim animator; qt4 will also work but we have migrated to qt5.
  • Support for ns-3-pyviz visualizer
    • For ns-3.28 and earlier releases, PyViz is based on GTK+ 2, GooCanvas, and GraphViz:
    • For Ubuntu 18.04, python-pygoocanvas is no longer provided. The ns-3.29 release and later upgrades the support to GTK+ version 3, and requires these packages:
  • Support for MPI-based distributed emulation
  • Support for bake build tool:
  • Debugging:
  • Support for utils/check-style.py code style check program
  • Doxygen and related inline documentation:
    • If you get an error such as 'convert ... not authorized source-temp/figures/lena-dual-stripe.eps', see this post about editing ImageMagick's security policy configuration: https://cromwell-intl.com/open-source/pdf-not-authorized.html. In brief, you will want to make this kind of change to ImageMagick security policy:

  • The ns-3 manual and tutorial are written in reStructuredText for Sphinx (doc/tutorial, doc/manual, doc/models), and figures typically in dia (also needs the texlive packages above):

Note: Sphinx version >= 1.12 required for ns-3.15. To check your version, type 'sphinx-build'. To fetch this package alone, outside of the Ubuntu package system, try 'sudo easy_install -U Sphinx'.

  • GNU Scientific Library (GSL) support for more accurate 802.11b WiFi error models (not needed for OFDM):

If the above doesn't work (doesn't detect GSL on the system), consult: https://coral.ise.lehigh.edu/jild13/2016/07/11/hello/. But don't worry if you are not using 802.11b models.

  • To read pcap packet traces
  • Database support for statistics framework
  • Xml-based version of the config store (requires libxml2 >= version 2.7)
  • Support for generating modified python bindings

and you will want to install castxml and pygccxml as per the instructions for python bindings (or through the bake build tool as described in the tutorial). The 'castxml' and 'pygccxml' packages provided by Ubuntu 18.04 and earlier are not recommended; a source build (coordinated via bake) is recommended. If you plan to work with bindings or rescan them for any ns-3 C++ changes you might make, please read the chapter in the manual on this topic.

Note: Ubuntu versions (through 19.04) and systems based on it (e.g. Linux Mint 18) default to an old version of clang and llvm (3.8), when simply 'libclang-dev' and 'llvm-dev' are specified. The packaging on these 3.8 versions is broken. Users of Ubuntu will want to explicitly install a newer version by specifying 'libclang-6.0-dev' and 'llvm-6.0-dev'. Other versions newer than 6.0 may work (not tested).

  • A GTK-based configuration system
  • To experiment with virtual machines and ns-3
  • Support for openflow module (requires libxml2-dev if not installed above)


The following list of packages should be aligned with recent Fedora releases; other releases may slightly vary. Note that these distributions sometimes change the package structure over time.

Important: If you are using RedHat or CentOS, either versions 6 or 7, the default compilers are too old to build recent ns-3 releases. You must upgrade gcc and g++ to a more recent version. See below.

Release-specific issues

  • Fedora 28 and Fedora 29 use gcc-8 by default, and this newer compiler raises warnings (that turn into compiler errors) with all ns-3 releases prior to ns-3.29.
  • RHEL 7 (and CentOS 7) use an older version of gcc (4.8.5) that is no longer compatible with ns-3 releases. An upgrade of gcc is needed; see these instructions on installing a devtoolset (such as devtoolset-7) if you need to upgrade: http://blog.stevedoria.net/20180214/how-to-install-gcc-7-on-centos-7
  • RHEL 6 (and CentOS 6) uses older versions of gcc (4.4) and Python (2.6) that are no longer compatible with ns-3 releases. An upgrade of both gcc and Python is needed; see these instructions on installing a devtoolset if you need to upgrade: https://www.nsnam.org/bugzilla/show_bug.cgi?id=2667#c1

Required and optional packages

  • minimal requirements for C++ (release): This is the minimal set of packages needed to run ns-3 from a released tarball.
  • minimal requirements for Python (release): This is the minimal set of packages needed to work with Python bindings from a released tarball.
  • Mercurial and git are needed to work with ns-3 development repositories.
  • An optional but recommended package (for improving some wireless model fidelity) is GNU scientific library:
  • Support for netanim animator:
  • A GTK-based configuration system

Prior to ns-3.29, use GTK+ version 2:

Starting with ns-3.29, use GTK+ version 3:

  • Debugging:
  • Doxygen and related inline documentation:
  • The ns-3 manual and tutorial are written in reStructuredText for Sphinx (doc/tutorial, doc/manual, doc/models), and figures typically in dia:

Note: Sphinx version >= 1.12 required for ns-3.15. To check your version, type 'sphinx-build'. To fetch this package alone, outside of the Fedora package system, try 'sudo easy_install -U Sphinx'

  • The Network Simulation Cradle (nsc) requires the flex lexical analyzer and bison parser generator; note, this requires older compiler support (gcc-4 series):
  • To read pcap packet traces
  • Database support for statistics framework
  • Xml-based version of the config store (requires libxml2 >= version 2.7)
  • Support for utils/check-style.py style check program
  • Support for MPI distributed simulations

Steve Smith notes that the shell must be restarted after environment-modules package is installed, since environment-modules modifies the bash initialization scripts to enable the module command. Then, to find the programs mpic++ and mpiexec, one must do:

and then the commands should be found by the shell:

  • Support for openflowswitch requires libxml2, if not installed above
  • Support for ns-3-pyviz visualizer (ns-3.28 release and earlier)
  • Support for ns-3 pyviz visualizer (ns-3.29 release and later)
  • Support for generating modified python bindings

and you will want to install castxml and pygccxml as per the instructions for python bindings (or through the bake build tool as described in the tutorial). If you plan to work with bindings or rescan them for any ns-3 C++ changes you might make, please read the chapter in the manual on this topic.

  • Support for bake tool:


macOS installation of ns-3 relies on the Xcode command line tools provided by Apple, and the clang/llvm compiler used therein. A third-party package manager such as Homebrew can be used for optional extensions to ns-3 such as libxml2.

Xcode macos 10.13.6 download

The current version of macOS is 'Catalina' (10.15) and the version of Xcode is 11.2, as of this writing.

If you are having problems with ns-3.29 and macOS, please look at the Errata page for some hints, or consider to use the development version (ns-3-dev) of ns-3 which should work now. ns-3.30 is not know to have macOS issues.

The main steps to follow to prepare your macOS machine for a base ns-3 install (Xcode tools, and Python) are as follows:

  1. Download and install Xcode Command Line Tools (most recently tested version 11.2) from the App Store, or the full Xcode.
    1. If you installed full Xcode, you still need to type `xcode-select --install` to obtain the command line tools.
    2. You will also have to agree to Apple's license agreement to proceed; type 'sudo clang -v' in a terminal window to take this step.

At this point, you will likely be able to compile the main C++ libraries. The current macOS Catalina release ships with a basic Python 3 interpreter (version 3.7.3) which is enough to run the Waf build system but not much else. To use Python bindings or other Python features, a fuller install of Python is recommended. Visit https://www.python.org/downloads/mac-osx/ to download a Python 3 release (recommended), or else, if you prefer, use Homebrew or some other package manager to install a Python development environment.

At this point, you should be able to use ns-3 in C++ or Python programs. The following options are available to add some additional libraries for more ns-3 features. In general, a third-party installer like Homebrew or MacPorts is needed:

  1. Recommended for Mojave users (for better Homebrew compatibility), install the legacy headers package found at: /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg. We are not sure whether this is available for Catalina (10.15).
  2. If you wish to use the NetAnim animator, you must install Qt5 (although Qt4 version also works with current releases).
  3. If you wish to use mercurial, you must install it. Follow the instruction in the mercurial web site. MacPorts and Homebrew are possible package managers to accomplish this.
  4. If you wish to use the GTK-based ConfigStore GUI, we recommend homebrew: if you install Gtk+3 using homebrew, you must install gtk+3. You must install also 'adwaita-icon-theme' (not installed by default), or you'll miss elements in the Gtk views

.Note to Anaconda users: If you have installed Anaconda, you may encounter a build problem such as:

This can be worked around by configuring Waf to use the system Python instead of the Python version provided by Anaconda. At the Waf configuration stage, try:

When using build.py, the argument can be passed as follows:

See: issue 2778 in the ns-3 tracker for more information.

For OS X 10.8 (Mountain Lion) and earlier, using Xcode 4 series, please see HOWTO_get_ns-3_running_on_Mac_OS_X_(10.6.2_Intel) and follow steps 1 and 2 (prerequisites) and continue reading below if you want to work with a released version, and follow all steps if you want to work with a development version of ns-3.


For Windows 10, there are two main options. Both involve using a Linux environment from within Windows. ns-3 is not compatible with the Windows Visual Studio compiler and IDE (there have been a few efforts to add Visual Studio support, but they have been abandoned).

  1. . Install a Linux virtual machine (e.g. using Hyper-V, VMware, etc.).
  2. . Windows offers a Windows subsystem for Linux, providing an Ubuntu-like environment. From within this environment, one can follow the Ubuntu installation guide and obtain most ns-3 features.

Below is some other older (possibly out-of-date) information regarding Windows:

  • We provide HOWTO documents describing the process for installing Linux and getting ns-3 running using two popular virtualization products: VirtualBox (HOWTO use VirtualBox to run simulations on Windows machines) and VMware (HOWTO use VMware to set up virtual networks (Windows)).
  • There is an experimental project, Ns3 on Windows, using Visual Studio 2012.


Installation with Bake

Bake is a new tool for installing, building and finding out the missing requirements for ns-3 in your own environment.

To use Bake you need to have at least Python (2.7 or above) and Git in your machine (see the section Prerequisites above to see how to install these).

First you need to download Bake using Git, go to where you want Bake to be installed and call

It is advisable to add bake to your path.

After that you can use Bake to find the missing packages, download build and install ns-3 and its modules.

To find out what is missing in your system and may be needed for installing ns-3 you can call bake check:

You should have seen something like:

Before downloading and building ns-3 you need to configure bake to inform it which are the modules you want added to ns-3, the standard distribution for example.

Download Xcode 11.2 For Mac Installer

Then to see the modules it has added, and the specific system requirements for this configuration, you can call bake show:

Xcode Macos 10.13.6 Download

To download the modules, build and install you can call bake deploy

This will download the selected modules, all their dependencies and build ns-3 with all these independent modules. You can also perform this installation step by step, i.e. by calling download and build in different steps.

Manual installation

The ns-3 code is available in Mercurial repositories on the server http://code.nsnam.org (look for the latest release e.g., 'ns-3.26'). You can download a tarball of the latest release at http://www.nsnam.org/releases or you can work with our repositories using Mercurial. We recommend using Mercurial unless there's a good reason not to (See the end of this section for instructions on how to get a tarball release).

The simplest way to get started using Mercurial repositories is to use the ns-3-allinone environment. This is a set of scripts that manages the downloading and building of various subystems of ns-3 for you. We recommend that you begin your ns-3 adventures in this environment as it can really simplify your life at this point.

Downloading ns-3 Using Git

One practice is to create a directory called repos in one's home directory under which one can keep local Git repositories. If you adopt that approach, you can get a copy of ns-3-allinone by typing the following into your Linux shell (assuming you have installed Git):

As the git command executes, you should see something like the following displayed,

After the clone command completes, you should have a directory called ns-3-allinone under your ~/repos directory, the contents of which should look something like the following:

Notice that you really just downloaded some Python scripts and not yet the C++ code. The next step will be to use those scripts to download and build the ns-3 distribution of your choice.

If you go to the following link: https://gitlab.com/nsnam/ you will see a number of repositories. Many are the private repositories of the ns-3 development team. The repositories of interest to you will be prefixed with ns-3. Official releases of ns-3 will be numbered as ns-3.release.hotfix. For example, a second hotfix to a still hypothetical release nine of ns-3 would be numbered as ns-3.9.2 on this page.

The current development snapshot (unreleased) of ns-3 may be found at https://gitlab.com/nsnam/ns-3-dev/. The developers attempt to keep these repository in consistent, working states but they are in a development area with unreleased code present, so you may want to consider staying with an official release if you do not need newly-introduced features.

You can find the latest version of the code either by inspection of the repository list or by going to the Getting Started web page and looking for the latest release identifier.

To download the most recent release (assuming it is ns-3.30 in this case), type the following into your shell (remember you can substitute the name of your chosen release number, or omit specifying it to download the tip of ns-3-dev)

After download process completes, you should have several new directories under ~/repos/ns-3-allinone:

Go ahead and change into ns-3.30 under your ~/repos/ns-3-allinone directory. You should see something like the following there:

You are now ready to build the ns-3 distribution.

Downloading ns-3 Using a Tarball

The process for downloading ns-3 via tarball is simpler than the Mercurial process since all of the pieces are pre-packaged for you. You just have to pick a release, download it and decompress it.

As mentioned above, one practice is to create a directory called repos in one's home directory under which one can keep local Mercurial repositories. One could also keep a tarballs directory. If you adopt the tarballs directory approach, you can get a copy of a release by typing the following into your Linux shell (substitute the appropriate version numbers, of course):

If you change into the directory ns-allinone-3.30 you should see a number of files:

You are now ready to build the ns-3 distribution.

Building ns-3 with build.py

The first time you build the ns-3 project you should build using the allinone environment. This will get the project configured for youin the most commonly useful way.

Change into the directory you created in the download section above. If you downloaded using Mercurial you should have a directory called ns-3-allinone under your ~/repos directory. If you downloaded using a tarball you should have a directory called something like ns-allinone-3.13 under your ~/tarballs directory. Type the following:

You will see lots of typical compiler output messages displayed as the build script builds the various pieces you downloaded. Eventually you should see the following magic words:

Once the project has built you typically will not use ns-3-allinone scripts. You will now interact directly with Waf and we do it in the ns-3-dev directory and not in the ns-3-allinone directory.

Configuration with Waf

To see valid configure options, type ./waf --help. The most important option is -d <debug level>. Valid debug levels (which are listed in waf --help) are: 'debug' or 'optimized'. It is also possible to change the flags used for compilation with (e.g.):

or, alternately, the gcc compiler

Note: Unlike some other build tools, to change the build target, the option must be supplied during the configure stage rather than the build stage (i.e., './waf -d optimized' will not work; instead, do

Download Xcode 11.2 For Mac Os

The resulting binaries are placed in build/<debuglevel>/srcpath. For example, in a debug build you can find the executable for the first.cc example as build/examples/first. You can debug the executable directly by:

Of course, you can run gdb in emacs, or use your favorite debugger such as ddd or insight just as easily. In an optimized build you can find the executable for the first.cc example as build/examples/ns-<version>-first-optimized.

In order to forcibly disable python bindings, you can provide the following option:

In order to tell the build system to use the sudo program to set the suid bit if required, you can provide the following option:

To start over a configuration from scratch, type:

Or if you get stuck and all else fails:

followed by changing back into ns-3-allinone and doing:

will basically reset your build state.

To see all waf options:


ns-3 has unit tests that can be run to verify the installation:

which should produce output like:

Using Python

See this page.


See this page.

Obsolete information

Older versions of ns-3, prior to 3.15, supported using cygwin to run on Windows platform.


There are three basic options for Windows support:

  1. We provide HOWTO documents describing the process for installing Linux support and getting ns-3 running using two popular virtualization products: VirtualBox (HOWTO use VirtualBox to run simulations on Windows machines) and VMware (HOWTO use VMware to set up virtual networks (Windows)).
  2. There is an experimental project, Ns3 on Windows, using Visual Studio 2012. For support on Visual Studio 2010 see ns-3 on Visual Studio 2010
  3. Cygwin has been supported in the past: gcc 3.4.4 (debug only), gcc 4.3.2 (debug and optimized). Note, however, that there are limitations with regard to Python bindings, and that Real-time simulator, Emulated Net Device, Tap Bridge and Network simulation cradle are not supported.

Download Xcode 11.2 For Mac Download

An alternative Windows platform is MinGW. There are maintainers who attempt to keep a subset of ns-3 running on MinGW, but it is not 'officially' suppported. This means that bugs filed against MinGW will be addressed as time permits.

Cygwin can sometimes be problematic due to the way it actually does its emulation, and sometimes interactions with other Windows software can cause problems. If you do use Cygwin or MinGW; and use Logitech products, we will save you quite a bit of heartburn right off the bat and encourage you to take a look at the MinGW FAQ.

Download Xcode For Macos High Sierra

Search for 'Logitech' and read the FAQ entry, 'why does make often crash creating a sh.exe.stackdump file when I try to compile my source code.' Believe it or not, the ``Logitech Process Monitor`` insinuates itself into every DLL in the system when it is running. It can cause your Cygwin or MinGW DLLs to die in mysterious ways and often prevents debuggers from running. Beware of Logitech software when using Cygwin.

Retrieved from 'https://www.nsnam.org/mediawiki/index.php?title=Installation&oldid=12233'

Xcode Download Macos Sdk

Comments are closed.