g++ with iOS sysroot and xcode 8.1



with xcode 8.0 i可以使用 sysroot

交叉编译iOS
/Applications/Xcode.app/Contents/Developer/usr/bin/g++ 
    --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk 
    -miphoneos-version-min=10.0 -arch armv7s -stdlib=libc++ -std=gnu++11 
    helloworld.cpp

但是,在Xcode 8.1的情况下,这将下降:

/Applications/Xcode.app/Contents/Developer/usr/bin/g++ 
    --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.1.sdk 
    -miphoneos-version-min=10.1 -arch armv7s -stdlib=libc++ -std=gnu++11 
    helloworld.cpp
clang: warning: using sysroot for 'MacOSX' but targeting 'iPhone'
In file included from helloworld.cpp:1:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iostream:38:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ios:215:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iosfwd:90:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/wchar.h:70:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/_types.h:27:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types.h:32:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/cdefs.h:761:2: error: Unsupported architecture
#error Unsupported architecture

警告using sysroot for 'MacOSX' but targeting 'iPhone'似乎表明sysroot参数被忽略(并且在错误中清楚地使用MACOSX10.12.SDK)。

这些论点是否改变了?如何正确指定系统根?

-isysroot与新的Xcode代替--sysroot,并使用一个空间代替符号。

,因为苹果的GCC/g 只是在clang/clang 的顶部,我们可以直接使用clang吗?

事实证明有效:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ 
    --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.1.sdk 
    -miphoneos-version-min=10.1 -arch armv7s -stdlib=libc++ -std=gnu++11 
    helloworld.cpp

Apple的GCC/G 似乎因更改Sysroot而被破坏。但是,我们似乎能够使用GCC风格的--sysroot参数。方便!

奇怪的是,如果我尝试使用未修复的叮当声,我必须使用-isysroot

clang++ 
    -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.1.sdk  
    -miphoneos-version-min=10.1 -arch armv7s -stdlib=libc++ -std=gnu++11 
    helloworld.cpp

最新更新