Changes between Version 42 and Version 43 of BuildMacApp
- Timestamp:
- Jul 17, 2012, 4:13:40 AM (12 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
BuildMacApp
v42 v43 2 2 3 3 = Building BOINC Project Applications for Macintosh OS X = 4 '''Last updated 10/11/10'''5 6 This document applies to BOINC libraries 6.11.9and later. It has instructions for building science project applications to run under BOINC on Macintosh OSX. Information for building the BOINC Client and Manager for Macintosh OSX can be found [wiki:MacBuild here].4 '''Last updated 7/17/12''' 5 6 This document applies to BOINC libraries 7.0.32 and later. It has instructions for building science project applications to run under BOINC on Macintosh OSX. Information for building the BOINC Client and Manager for Macintosh OSX can be found [wiki:MacBuild here]. 7 7 8 8 Contents of this document: … … 17 17 * '''x86_64-apple-darwin''': 64-bit intel processors running OS 10.5.0 and above 18 18 19 BOINC does not support 64-bit PowerPC applications for the Mac. 20 21 Of course, you can choose to support only some of these platforms. For example, you may not need a 64-bit version. If your project does not support the x86_64-apple-darwin platform, BOINC will automatically request your i686-apple-darwin application. And / or you may choose not to support the powerpc-apple-darwin platform. 22 23 Although BOINC version 6.1.0 supports only Mac OS X 10.3.9 and later, earlier versions supported all versions back to OS 10.3.0. The GCC compiler version 4.0 was introduced in OS 10.3.9. OS 10.3.0 through 10.3.8 can't run applications built with GCC 4.0. Also, starting with version 6.10.58, the BOINC Client supports only Mac OS X 10.4.0 and later. This allows it to be built with XCode 3.2 under OS 10.6.x, which does not support the Mac OS 10.3.9 SDK. 24 25 You have 2 choices if you want to support PowerPC (G3, G4 and G5) processors: 26 27 * Build your PowerPC application with GCC 4.0 and distribute it only to Macs running 10.3.9 (or 10.4.0) or later. 28 * Build your PowerPC application with GCC 3.3. 19 BOINC no longer supports PowerPC applications for the Mac. 20 21 Of course, you can choose to support only some of these platforms. For example, you may not need a 64-bit version. If your project does not support the x86_64-apple-darwin platform, BOINC will automatically request your i686-apple-darwin application. 22 23 Starting with version 6.10.58, the BOINC Client supports only Mac OS X 10.4.0 and later. This allows it to be built with XCode 3.2 under OS 10.6.x and later. 29 24 30 25 The libraries supplied with different versions of OS X support different APIs. You need to take certain steps to ensure that you use only APIs that are available in all the OS versions you plan to support. There are two basic ways to accomplish this: 31 26 32 27 * Build each platform on a system running the oldest OS you need to support: 33 * A PowerPC development system running OS 10.3.0 through 10.3.8 (or 10.3.9 or 10.4.0 if you won't support the older systems)34 28 * An Intel development system running OS 10.4.x 35 29 * A 64-bit development Intel system running OS 10.5.x or later (The original Intel Macs used an Intel Core Duo processor which was 32-bit only. You must have an Intel Core 2 Duo or newer processor to run 64-bit applications.) 36 * Use a single development system running OS 10.5.x or later and cross-compile for the various platforms. The remainder of this document describes that process. 30 * Use a single development system running OS 10.7.x or later and cross-compile for the various platforms. The remainder of this document describes that process. 31 32 '''Note:''' This issue applies mainly to Mac-specific APIs; support for standard UNIX functions rarely changes over different Mac OS versions. However, the version numbers of some UNIX libraries do change over time, and applications which dynamically link to them may fail to load on older systems if they are built on a newer system. If this happens, the best solution is to build a static version of the UNIX library yourself and static link it to your application. Most UNIX libraries are open source, so you can get the source files and build them yourself. Many are available from http://opensource.apple.com/. 37 33 38 34 You will also need to build the BOINC libraries on each platform and any other libraries your application needs. You can use the Makefiles supplied in the BOINC Subversion tree to build the BOINC libraries with this approach, or build them as Universal Binaries using the BOINC XCode project, as described later in this document. 39 35 40 36 == Cross-Platform Development == 41 Apple provides the tools necessary to cross-compile for all three BOINC Mac platform on any Mac running OS 10.5.x. If you don't need to support the x86_64-apple-darwin platform, you can also cross-compile on OS 10.4.x. 42 43 Apple provides Software Developer Kits (SDKs) for OS 10.3.9, OS 10.4, OS 10.5 and OS 10.6. These include all the header files and stub libraries appropriate to the corresponding versions of OS X. However, the OS 10.3.9 cannot be used with XCode 3.2 under OS 10.6. 44 45 You get these tools, including the GCC compilers and system library header files, by installing the XCode Tools package. We recommend running OS 10.6.x and installing XCode Tools 3.2 or later. If you have the OS 10.6 installation DVD for your system, you can install XCode Tools at the time you install the OS, or you can install it later by opening the file `Optional Installs/XCode Tools/XCodeTools.mpkg`. 46 47 Otherwise, you can download it from Apple's web site (it is large: 1.1 GB). You must be a member of the Apple Developer Connection to download the software, but you can join for free at: http://connect.apple.com 48 49 XCode will automatically check compatibility back to OS 10.3 if the following are defined during compilation: 50 51 {{{ 52 MAC_OS_X_VERSION_MAX_ALLOWED=1030 53 MAC_OS_X_VERSION_MIN_REQUIRED=1030 54 }}} 55 Note that the MacOS10.4u SDK is not automatically included unless you customize the installation; click the '''Customize''' button in the ''Installation type'' step when you run the XCode Tools installer. 56 37 Apple provides the tools necessary to cross-compile for both BOINC Mac platforms on any Mac running OS 10.7.x or OS 10.8.x. You get these tools, including the GCC compilers and system library header files, by installing the Xcode Tools package. 38 39 You can download Xcode 4.3 or Xcode 4.4 from Apple's App Store (it is large: about 2 GB). If you are a member of Apple's Mac Developer Program, you can also download it from Apple's web site: http://developer.apple.com. You can also register for free access to Apple developer tools at: https://developer.apple.com/programs/register/. See the section [#InstallingandsettingupXcode Installing and setting up Xcode] for further information. 40 41 XCode will automatically check compatibility back to OS 10.4 if the following are defined during compilation: 42 43 {{{ 44 MAC_OS_X_VERSION_MAX_ALLOWED=1040 45 MAC_OS_X_VERSION_MIN_REQUIRED=1040 46 }}} 57 47 The example_app found in `boinc/samples` has examples of 3 different ways to build the application for all 3 platforms using cross-development: 58 48 … … 63 53 The basic requirements for building each platform are: 64 54 65 * Specify the architecture: ppc,i386 or x86_6466 * Specify the compiler to use (we recommend GCC-4.0).55 * Specify the architecture: i386 or x86_64 56 * Specify the compiler to use. 67 57 * Specify an appropriate SDK. It is OK to use the latest SDK even if building for older versions of OS X. 68 58 * Specify the Mac OSX Deployment Target, which is the minimum target OS X version on which you want your to application run. … … 72 62 73 63 {{{ 74 -DMAC_OS_X_VERSION_MAX_ALLOWED=1030 -DMAC_OS_X_VERSION_MIN_REQUIRED=103075 64 -DMAC_OS_X_VERSION_MAX_ALLOWED=1040 -DMAC_OS_X_VERSION_MIN_REQUIRED=1040 76 65 -DMAC_OS_X_VERSION_MAX_ALLOWED=1050 -DMAC_OS_X_VERSION_MIN_REQUIRED=1050 77 66 }}} 78 These specify that the executable should be able to run on systems back to OS 10. 3, OS 10.4 and OS 10.5, respectively.79 80 You can find examples in the following files in the BOINC SVN trunk:[[BR]] `boinc/mac_build/buildc-ares.sh`[[BR]] `boinc/mac_build/buildcurl.sh`[[BR]] `boinc/mac_build/build jpeg.sh`[[BR]] `boinc/samples/example_app/MakeMacExample.sh`[[BR]] `boinc/samples/example_app/Makefile_mac2`[[BR]] `boinc/samples/example_app/Makefile_mac`[[BR]] `boinc/samples/wrapper/Makefile_mac`[[BR]]67 These specify that the executable should be able to run on systems back to OS 10.4 and OS 10.5, respectively. 68 69 You can find examples in the following files in the BOINC SVN trunk:[[BR]] `boinc/mac_build/buildc-ares.sh`[[BR]] `boinc/mac_build/buildcurl.sh`[[BR]] `boinc/mac_build/buildopenssl.sh`[[BR]] `boinc/samples/example_app/MakeMacExample.sh`[[BR]] `boinc/samples/example_app/Makefile_mac2`[[BR]] `boinc/samples/example_app/Makefile_mac`[[BR]] `boinc/samples/wrapper/Makefile_mac`[[BR]] `boinc/samples/vboxwrapper/Makefile_mac`[[BR]] `boinc/samples/vboxwrapper/BuildMacVboxWrapper.sh`[[BR]] `boinc/samples/vboxwrapper/Makefile_mac`[[BR]] 81 70 82 71 == Preparing To Build == … … 85 74 Source files are now archived using Subversion. You can download svnX, a free GUI application for running Subversion from either [http://www.apple.com/downloads/macosx/development_tools/svnx.html] or [http://www.lachoseinteractive.net/en/community/subversion/svnx/]. 86 75 87 You also need to install Subversion itself. One place to get it is: [http://www.codingmonkeys.de/mbo/]. 88 89 If you are running OS X 10.6 and XCode 3.2, a recent version of Subversion is already installed in `/usr/bin/`. To copy it into `/usr/local/bin/`, enter the following in the Terminal utility application: 76 If you installed the developer command line (CLI) tools from Xcode, then a recent version of Subversion is already installed in `/usr/bin/`. To copy it into `/usr/local/bin/` (where svnX expects to find it), enter the following in the Terminal utility application: 90 77 91 78 {{{ … … 105 92 Build the BOINC libraries as follows: 106 93 107 BOINC itself is built using the `boinc.xcodeproj` file. You can either build directly in XCode (more information below) or run the `BuildMacBOINC.sh` script. Note: this script requires XCode 3.2 running under OS 10.6.x. Run the script as follows:94 BOINC itself is built using the `boinc.xcodeproj` file. You can either build directly in XCode (more information below) or run the `BuildMacBOINC.sh` script. Note: this script requires OS 10.6 or later. Run the script as follows: 108 95 109 96 {{{ … … 118 105 The options for BuildMacBOINC.sh are: 119 106 120 -dev:: build the development (debug) version (native architecture only). Default is deployment (release) version (universal binaries containing three architectures: ppc,i386 and x86_64); when you link your application with these libraries, the linker will automatically select the architecture matching your application.107 -dev:: build the development (debug) version (native architecture only). Default is deployment (release) version (universal binary: i386 and x86_64); when you link your application with these libraries, the linker will automatically select the architecture matching your application. 121 108 -noclean:: don't do a 'clean' of each target before building. default is to clean all first. 122 109 … … 124 111 125 112 -all:: build all targets (i.e. target 'Build_All' -- this is the default) 126 -lib:: build the three libraries: libboinc_api.a, libboinc_graphics_api.a, libboinc.a.127 -client:: build two targets: BOINC client and command-line utility [ wiki:BoincCmd boinc_cmd] (also builds libboinc.a, since boinc_cmd requires it.)128 129 Both -lib and -client may be specified to build fivetargets (no BOINC Manager.)113 -lib:: build the five libraries: libboinc_api.a, libboinc_graphics_api.a, libboinc.a, libboinc_opencl.a, jpeglib.a. 114 -client:: build two targets: BOINC client and command-line utility [http://boinc.berkeley.edu/wiki/Boinccmd_tool boinccmd] (also builds libboinc.a, since boinc_cmd requires it.) 115 116 Both -lib and -client may be specified to build seven targets (no BOINC Manager.) 130 117 131 118 For more information on this script, please see [wiki:MacBuild here]. … … 136 123 * '''boinc.xcodeproj''' builds BOINC. It can be used either with the BuildMacBOINC.sh script or as a stand-alone project. The Development build configuration builds only the native architecture and is used for debugging. The Deployment build configuration builds a universal binary and is suitable for release builds. If there are any other build configurations, they should not be used as they are obsolete. 137 124 138 The standard release of BOINC version 6.1.0 and later contains a universal binary of the BOINC libraries containing builds for three architectures: ppc, i386 and x86_64.139 140 125 == Build Any Other Needed Libraries == 141 If you are building a third-party library (such as JPEG), you will need to take the steps listed above in the section Cross-Platform Development. See the files listed above for examples of how to accomplish this.126 If you are building a third-party library, you will need to take the steps listed above in the section Cross-Platform Development. See the files listed above for examples of how to accomplish this. 142 127 143 128 == Build Your Application Using Cross-Development == … … 145 130 146 131 === Using an XCode Project === 147 Double-click on the project file `boinc/samples/mac_build/UpperCase2.xcodeproj`. At the top of the main window, select '''Build_All''' for the ''Active Target'', and '''ppc_Deployment''' for the ''Active Build Configuration''. Then click on the Build icon (or select Build from the Build menu.) Repeat for ''Active Build Configurations'' '''i386_Deployment''' and '''x86_64_Deployment'''. 148 149 Note: you may see the following warning when building the PowerPC executable. You may safely ignore it: 150 151 {{{ 152 ld: warning: object file compiled with -mlong-branch which is no longer needed. 153 To remove this warning, recompile without -mlong-branch 154 }}} 155 Use the example XCode project as a guide or a starting point to create an XCode project for your own application. Pay special attention to the XCode build settings. For more information on using XCode, see [http://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/XcodeWorkspace XCode Workspace Guide]. 156 157 Also note that you can use the program `xcodebuild` to build XCode projects from the command-line (e.g. in a terminal window or shell script). There are various flags for building particular builds within a project, and for overriding default variables as well (check `man xcodebuild` in a terminal window for the options). You can find an example of this approach in the file `boinc/mac_build/buildWxMac.sh` 132 Double-click on the project file `boinc/samples/mac_build/UpperCase2.xcodeproj`. At the top of the main window, select '''Build_All''' for the ''scheme'', then select "Build for Archiving" from the Build menu.) '''Note:''' Do '''not''' select "Archive" from the Build menu. 133 134 Use the example XCode project as a guide or a starting point to create an XCode project for your own application. Pay special attention to the XCode build settings. 135 136 '''Note:''' By default, Xcode puts built products in an obscure location. You can determine that location using Xcode's "Organizer" window. To avoid this issue, the UpperCase2.xcodeproj and vboxwrapper.xcodeproj each have a "Run script" build phase which copies the built applications (as well as the symbol tables for the release builds) to a local `./build/` directory. 137 138 For more information on using XCode, see [http://developer.apple.com/library/mac/documentation/ToolsLanguages/Conceptual/Xcode4UserGuide/ Xcode 4 User Guide]. 139 140 Also note that you can use the program `xcodebuild` to build XCode projects from the command-line (e.g. in a Terminal window or shell script). There are various flags for building particular builds within a project, and for overriding default variables as well (check `man xcodebuild` in a Terminal window for the options). You can find an examples of this approach in the files `boinc/mac_build/BuildMacBOINC.sh` and `boinc/mac_build/buildWxMac.sh` 158 141 159 142 === Using a Generic Makefile With a Custom Shell Script === … … 166 149 Again, you can use this shell script as a guide or starting point to create one for your application. Let's examine the details: 167 150 168 If your application uses an autoconf file, you can set the various environment variables for configure directly. For examples, see the scripts `buildc-ares.sh`, `buildcurl.sh` and `build jpeg.sh` in the directory `{path}/BOINC_dev/boinc/mac_build/`.169 170 In this case, there is no autoconf file, so we had to modify the generic Makefile slightly . The most significant change was to add the variable `VARIANTFLAGS` to the list of arguments in `CXXFLAGS`. The remaining changes were to ensure that the search paths included the needed BOINC headers and libraries.151 If your application uses an autoconf file, you can set the various environment variables for configure directly. For examples, see the scripts `buildc-ares.sh`, `buildcurl.sh` and `buildopenssl.sh` in the directory `{path}/BOINC_dev/boinc/mac_build/`. 152 153 In this case, there is no autoconf file, so we had to modify the generic Makefile slightly; the shell script uses Makefile_mac. The most significant change was to add the variable `VARIANTFLAGS` to the list of arguments in `CXXFLAGS`. The remaining changes were to ensure that the search paths included the needed BOINC headers and libraries. 171 154 172 155 Here are the elements of our script: 173 156 174 157 {{{ 175 export PATH=/usr/local/bin:$PATH 176 }}} 177 XCode 2.4.1 installs autoconf 2.59 and automake 1.6.3. XCode 3.x installs autoconf 2.61 and automake 1.10. To determine the version number, type autoconf --version or automake --version. If you installed a later version of either or both, they will be in the '/usr/local/bin/' directory. This line ensures that the system will look there first. 158 GCCPATH=`xcrun -find gcc` 159 GPPPATH=`xcrun -find g++` 160 MAKEPATH=`xcrun -find make` 161 TOOLSPATH1=${MAKEPATH%/make} 162 ARPATH=`xcrun -find ar` 163 TOOLSPATH2=${ARPATH%/ar} 164 export PATH="${TOOLSPATH1}":"${TOOLSPATH2}":/usr/local/bin:$PATH 165 }}} 166 By default, the basic installation of Xcode 4.3 puts many of the command-line tools in unusual places. The above lines allow the Make file to find what it needs. 167 '''Note:''' If you installed the full command-line tool set from Xcode (as described in the section [#InstallingandsettingupXcode Installing and setting up Xcode]), then the standard tools will be in their normal locations and you may not need the above lines. 168 169 If you installed any additional command-line tools yourself, they may be in the '/usr/local/bin/' directory. 178 170 179 171 None of these examples require running `_autosetup`. If you are building other libraries or utilities that do have `_autosetup` , you may also need to install [http://sourceforge.net/projects/pkgconfig/ pkg-config]. 180 172 181 173 {{{ 182 export CC=/usr/bin/gcc-4.0;export CXX=/usr/bin/g++-4.0 183 }}} 184 Specifies which compiler to use. 185 186 {{{ 187 export MACOSX_DEPLOYMENT_TARGET=10.3 174 SDKPATH=`xcodebuild -version -sdk macosx Path` 175 }}} 176 This gets the path to the current Mac OSX SDK, which contains the standard headers needed by most builds. 177 178 {{{ 179 export CC="${GCCPATH}";export CXX="${GPPPATH}" 180 }}} 181 Specifies which compiler to use. (If you have installed the command-line tools in their standard locations, then this line could simply be `export CC=gcc;export CXX=g++`) 182 183 {{{ 184 export LDFLAGS="-Wl,-syslibroot,${SDKPATH},-arch,i386" 185 }}} 186 Specifies the appropriate SDK to use and the architecture for the linker. 187 188 {{{ 189 export VARIANTFLAGS="-isysroot ${SDKPATH} -arch i386 -DMAC_OS_X_VERSION_MAX_ALLOWED=1040 -DMAC_OS_X_VERSION_MIN_REQUIRED=1040 -fvisibility=hidden -fvisibility-inlines-hidden" 190 }}} 191 Specifies the SDK to use and the architecture for the compiler. MAC_OS_X_VERSION_MAX_ALLOWED and MAC_OS_X_VERSION_MIN_REQUIRED tell the compiler to generate an error if you are using any APIs not yet available in that version of the Mac OS. 192 193 {{{ 194 export SDKROOT="${SDKPATH}" 195 }}} 196 Another way of specifying the SDK to use. 197 198 {{{ 199 export MACOSX_DEPLOYMENT_TARGET=10.4 188 200 }}} 189 201 Specifies the Mac OSX Deployment Target, which is the minimum target OS X version on which you want your to application run. This sets certain symbol variants which determine the UNIX standard to be followed. For details, see [http://developer.apple.com/library/mac/#releasenotes/Darwin/SymbolVariantsRelNotes/ this page]. We recommend the following values for the MACOSX_DEPLOYMENT_TARGET: 190 * For PowerPC builds: 10.3191 202 * For 32-bit Intel builds: 10.4 192 203 * For 64-bit Intel builds: 10.5 193 204 194 {{{195 export LDFLAGS="-Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk,-arch,ppc"196 }}}197 Specifies the appropriate SDK to use and the architecture for the linker.198 199 {{{200 export VARIANTFLAGS="-arch ppc -DMAC_OS_X_VERSION_MAX_ALLOWED=1030 -DMAC_OS_X_VERSION_MIN_REQUIRED=1030 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -fvisibility=hidden -fvisibility-inlines-hidden"201 }}}202 Specifies the SDK to use and the architecture for the compiler. MAC_OS_X_VERSION_MAX_ALLOWED and MAC_OS_X_VERSION_MIN_REQUIRED tell the compiler to generate an error if you are using any APIs not yet available in that version of the Mac OS.203 204 We recommend the following values for the SDK:205 * For PowerPC builds: MacOSX10.4u.sdk206 * For 32-bit Intel builds: MacOSX10.4u.sdk207 * For 64-bit Intel builds: MacOSX10.5.sdk208 209 205 === Using a Custom Makefile === 210 206 Type the following in Terminal: … … 214 210 make -f Makefile_mac2 clean all 215 211 }}} 216 The elements of our custom Makefile correspond to those described in our script. 212 '''Note:''' You must have installed the full command-line tool set from Xcode (as described in the section [#InstallingandsettingupXcode Installing and setting up Xcode]) to use this method. 213 The elements of our custom Makefile correspond to those described in our script, except that no SDK need be specified. Installing the full command-line tool set from Xcode installs all headers either to their standard locations or to the frameworks at `/System/Library/Frameworks`, and the compilers default to use these headers and the standard libraries. 217 214 218 215 == Upgrading applications for version 6 graphics == 219 One of the major changes in BOINC for version 6 is that applications are now expected to generate graphics in a separate executable. The graphics application typically communicates with the worker application using shared memory.216 One of the major changes in BOINC for version 6 was that applications are now expected to generate graphics in a separate executable. The graphics application typically communicates with the worker application using shared memory. 220 217 221 218 For additional information, please see the [wiki:GraphicsApi Graphics API] page. … … 224 221 There is an optional API `setMacIcon()` in the `libboinc_api.a` library. This allows science graphics applications to display an application icon in the Dock and in the Finder. (The icon does not appear in the Dock until the application displays graphics.) To implement this, do the following: 225 222 226 * Use '/Developer/Applications/utilities/Icon Composer.app' to create a xxx.icns file. (Use any name you wish instead of xxx.)223 * Use the `Icon Composer` application to create a xxx.icns file. (Use any name you wish instead of xxx.) To access this application, control-click on the Xcode icon in Finder and select "Show package contents" from the contextual menu. Then browse to `Contents/Applications/Icon Composer.app`. 227 224 * Convert the xxx.icns file to an app_icon.h file as follows: in Terminal, run: 228 225 {{{ 229 226 {path}/MakeAppIcon_h {source_file_path}/xxx.icns {dest_file_path}/app_icon.h 230 227 }}} 231 (The !MakeAppIcon_h command-line utility is built by the Mac boinc XCode project in the 'boinc/mac_build/build/' directory.) Add the app_icon.h file to your graphics application's project.228 (The MakeAppIcon_h command-line utility is built by the Mac boinc XCode project in the 'boinc/mac_build/build/' directory.) Add the app_icon.h file to your graphics application's project. 232 229 * In the graphics application's main(), add 233 230 {{{ … … 240 237 * The graphics application must link with Carbon.framework to use setMacIcon(). 241 238 239 == Installing and setting up Xcode == 240 241 Versions of Xcode prior to Xcode 4.3 have an installer package. After downloading Xcode, mount the disk image file by double-clicking on it, then double-click the installer package. 242 243 Starting with Xcode 4.3, the disk image contains a copy of Xcode itself. After mounting the disk image, drag the Xcode icon to the folder where you wish it to reside. In most cases, this will be the `/Applications/` folder. Unmount the disk image by dragging it to the trash. Finally, double-click on the installed Xcode icon to run Xcode. Xcode will display a dialog allowing you to finish the installation; you must do this before running BOINC's build scripts. (Some versions of Xcode may not display this dialog until you open a file with Xcode.) 244 245 Once you have done this, you will be able to build applications using Xcode projects and shell scripts as described earlier in this document. If you wish to be able to build directly using the UNIX tools configure and make, you must also install the full command-line tool set from Xcode as follows: 246 1. Launch Xcode. 247 2. Select "Preferences..." from the "Xcode" menu. 248 3. Click on the "Downloads" icon at the top of the Preferences dialog. 249 4. Click on the "Install" button next to "command-line tools." 250 251 You can find more details [http://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/WhatsNewXcode/Articles/xcode_4_3.html#//apple_ref/doc/uid/1006-SW2 here]. 252 242 253 == Additional References == 243 http://developer.apple.com/ technotes/tn2005/tn2137.html [[BR]] http://developer.apple.com/documentation/DeveloperTools/Conceptual/cross_development/ [[BR]] http://developer.apple.com/releasenotes/DeveloperTools/RN-GCC4/ [[BR]] http://developer.apple.com/library/mac/#documentation/Porting/Conceptual/PortingUnix/intro/intro.html [[BR]] http://developer.apple.com/legacy/mac/library/#documentation/MacOSX/Conceptual/universal_binary [[BR]] http://developer.apple.com/releasenotes/DeveloperTools/GCC40PortingReleaseNotes/index.html254 http://developer.apple.com/documentation/DeveloperTools/Conceptual/cross_development/ [[BR]] http://developer.apple.com/library/mac/#documentation/Porting/Conceptual/PortingUnix/intro/intro.html [[BR]] http://developer.apple.com/legacy/mac/library/#documentation/MacOSX/Conceptual/universal_binary