You can configure how your executable is built from the Xamarin Studio's iPhone Build properties page. Some features are configured on the default page, some on the Advanced page (available on newer versions of Xamarin Studio and Xamarin.iOS). In addition to the configuration options available on the UI, you can also pass your own set of command line options to the Xamarin.iOS build tool (mtouch).
Xamarin Studio lets user configure two important properties: the iPhoneOS SDK to use to build your software and the minimum required OS version.
The iPhoneOS SDK version option lets you use different versions of an Apple published SDK, this directs Xamarin.iOS to which compilers, linkers and libraries it should reference during your build.
The Minimum OS version setting is used to select the minimum required version of the operating system on which your application will run. This is turned into a property in your Info.plist file. You should pick the minimum version that has all the APIs that you need to run your application.
In general, the Xamarin.iOS API exposes all the methods available in the latest version of the SDK, and when necessary, we provide convenience properties that allow you to detect if the functionality is available at runtime (for example, UIDevice.UserInterfaceIdiom and UIDevice.IsMultitaskingSupported always work on Xamarin.iOS, we do all the work behind the scenes).
See our dedicated page on the Linker to learn more about how the linker helps you reduce the size of your executables and to find out how to use it effectively.
Code Generation Engine
Starting with Xamarin.iOS 4.0, there are two code generation backends to Xamarin.iOS. The regular Mono code generation engine and one based on the LLVM Optimizing Compiler. Each engine has its pros and cons.
Typically, during the development process, you will likely use the Mono code generation engine as it will let you iterate quickly. For release builds and AppStore deployment, you will want to switch to the LLVM code generation engine.
(iPhone 3GS and newer)
The LLVM optimizing backend engine produces both faster and tighter code than the Mono engine does, at the cost of long compile times.
You can enable these from the Advanced Tab in your iOS Build panel in Xamarin Studio or Visual Studio.
ARMV7 and ARMV7s support
Both the original iPhone and the iPhone 3G used an ARMv6 CPU. Newer models of the iPhone, starting with the 3GS and including the iPhone 4 and the iPads come with a more sophisticated processor, the ARMv7. iPhone 5 ships with the ARMv7s processor.
If you target only the ARMv7s processor, the code generated will be slightly faster, but it will no longer run on ARMv7 or ARMv6 systems unless you compile a fat binary that contains multiple executables in your package.
Apple does not allow developers to upload ARMv7s or ARMv7-only executables for a product that originally ran on the ARMv6.
ARMv6 is not longer supported in XCode as of XCode 4.5. If you want to target ARMv6 in Xamarin Studio, you must have an earlier version of XCode installed.
ARM Thumb Support
Thumb is a more compact instruction set used by ARM processors. By enabling the Thumb support, you can reduce the size of your executable, at the expense of slower execution times. Thumb is supported on ARMv6, ARMv7 and ARMv7s.