使用Xcode 8.0,我可以使用sysroot
:
/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)。
这些参数有变化吗?如何正确指定sysroot?
答案 0 :(得分:1)
由于Apple的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
答案 1 :(得分:1)
将-isysroot
与较新的Xcode而不是--sysroot
一起使用,并使用空格代替等号。