iOS静态库使用Scons链接器在错误的平台上搜索构建

iOS static library build with Scons linker search on wrong paltform

本文关键字:错误 平台 构建 搜索 静态 链接 Scons iOS      更新时间:2023-10-16

我正在尝试将jsoncpp(C++代码)构建为iPhone模拟器的静态库&装置模拟器编译成功,但设备编译失败。我认为原因是搜索的链接器包含在MacOSX10.11.sdk中,而不是iPhoneOS9.1.sdk中。我不清楚为什么链接器没有在iPhoneOS9.1.sdk中搜索,以及为什么在模拟器编译中不存在这个问题。

我正在使用带有下一个配置的烤饼:

env = Environment(CXX = 'clang++', TARGET_OS = 'ios', toolpath = ['scons-tools'], tools=[] )
if platform == "ios_phone":
    env['CXXFLAGS'] = '-std=c++11 -stdlib=libc++  -arch armv7 --sysroot %s' %(IOSROOT)
    env['LINKFLAGS'] = '-stdlib=libc++ -arch armv7 -isysroot %s' %(IOSROOT)
    env['TARGET_ARCH'] = 'armv7'
    print env.Dump()
#IOS SIMULATOR COMPILATION
if platform == "ios_simulator":
    env['CXXFLAGS'] = '-std=c++11 -stdlib=libc++  -arch i386 -arch x86_64 --sysroot %s' %(IOS_SIMULATOR_ROOT)
    env['LINKFLAGS'] = '-stdlib=libc++ -arch i386 -arch x86_64  -isysroot %s' %(IOS_SIMULATOR_ROOT)
    env['TARGET_ARCH'] = 'i386, x86_64'
    print env.Dump()

然后得到下一个错误:

烤饼:建筑目标。。。叮当++-obuildscons/ios_phone/src/lib_json/json_reader.o-c-std=c++11-stdlib=libc++-arch armv7--sysroot/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Develer/SDKs/iPhoneOS9.1.sdk-I包含src/lib_json/json_reader.cpp包含在src/lib_6json/json-reader.cpp:7:包含在文件中include/json/rereader.h:11:在包含的文件中include/json/value.h:12:在包含的文件中/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchains/usr/bin/../include/c++/v1/string:434:在包含的文件中/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchains/usr/bin/../include/c++/v1/__config:23:在包含的文件中/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/unistd.h:71:在包含的文件中/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Develer/SDKs/MacOSX10.11.sdk/usr/include/_types.h:27:在包含的文件中/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/sys/_types.h:32:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/sys/cdefs.h:707:2:错误:不支持的体系结构

错误不支持的体系结构

我没有在env参数中找到MacOSX。

你知道如何强制链接器使用正确的平台吗?或者根本原因是什么?

问题是Xcode命令行通行费,我必须手动更新。更新的原因是我进行了新的Xcode(7)更新。更新后,编译工作非常完美。