OS X 10.11 (El Capitan) introduces a new security policy called System Integrity Protection. In 10.11, the following directories can only be written to by the system (System-Only Locations): /bin, /sbin, /usr, /System, /Applications/Utilities. In contrast, the following directories are available to any process (Locations Available to Developers): /usr/local, /Applications, [~]/Library.
This security policy affects Intel® Parallel Studio XE 2016 (IPS XE), because IPS XE creates symbolic links in /usr/bin for compilers to be properly recognized by Xcode IDE. IPS XE 2016 Update 1 officially supports OS X 10.11, and it creates symbolic links in /usr/local/bin.
Note: It's not recommended to invoke Intel compilers from /usr/bin or /usr/local/bin. For more details on how to use Intel compilers in command line, please refer to Using the Command Line section of Intel® C++ Compiler 16.0 User and Reference Guide.
There are a few possible scenarios:
OS X 10.10. IPS XE 2016 Update 1 will create links in both locations /usr/bin (to overwrite links created by IPS XE 2016 initial release or earlier product) and /usr/local/bin. Xcode will utilize links from /usr/local/bin.
Upgrade to OS X 10.11. Symbolic links in /usr/bin will be moved to /Library/SystemMigration/History/Migration-<UUID>/QuarantineRoot/usr/bin by system upgrade; Symbolic links in /usr/local/bin will stay at this location untouched. So, Xcode integration for all compilers in IPS XE 2016 initial release or earlier products will be broken. Compilation through Xcode IDE will fail with such error message:
error: can't exec '/usr/bin/icc-16.0' (No such file or directory)
The compilers in IPS XE 2016 Update 1 will work with Xcode IDE correctly.
OS X 10.11. Installation of IPS XE 2016 Update 1 will create links in /usr/local/bin only. Xcode integration will use these links. Xcode integration for previous compiler versions installed on system will not work (see point 2).
OS X 10.11. Removed /usr/local directory. /usr/local is a prerequisite for compiler installation on OS X 10.11. Other way installer will not be able to create links in this location. Please find instruction how to recover /usr/local directory below.
How to recover /usr/local directory on OS X 10.11:
- Reboot into Recovery mode (hold Cmd+R on boot).
- In the Terminal run:
csrutil disable
- Reboot back into OS X.
- Open your Terminal application and execute:
sudo mkdir /usr/local sudo chflags norestricted /usr/local sudo chown $(whoami):admin /usr/local sudo chown -R $(whoami):admin /usr/local
- Reboot back into Recovery Mode.
- In the Terminal execute:
csrutil enable
- Reboot back into OS X.