在OS X上进行编译时,不支持--with-sysroot吗?

时间:2017-11-10 15:39:57

标签: c++ ios cross-compiling autoconf

我有一个C ++项目。我正在使用OS X for iOS上的Autotools测试交叉编译。我配置:

$ echo $IOS_SYSROOT
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.2.sdk

$ CXXFLAGS="-DNDEBUG -g2 -O3 -arch arm64" ./configure --with-sysroot="$IOS_SYSROOT" --build=`config.guess` --host=aarch64-ios

make导致其结果(为清晰起见而添加换行符):

libtool: compile:  /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++
-DHAVE_CONFIG_H -I. ... -DNDEBUG -g2 -O3 -arch arm64 -MT adhoc.lo -MD -MP -MF .deps/adhoc.Tpo -c adhoc.cpp -o adhoc.o
In file included from adhoc.cpp:2:
In file included from /usr/include/c++/4.2.1/iosfwd:44:
In file included from /usr/include/c++/4.2.1/bits/c++config.h:41:
In file included from /usr/include/c++/4.2.1/bits/os_defines.h:61:
In file included from /usr/include/unistd.h:71:
In file included from /usr/include/_types.h:27:
In file included from /usr/include/sys/_types.h:32:
/usr/include/sys/cdefs.h:658:2: error: Unsupported architecture
#error Unsupported architecture
...

请注意正在使用错误的头文件。使用构建系统的头文件而不是iPhone头文件。我相当肯定--with-sysroot没有被尊重。搜索关键字似乎表示其为widespread problem with Autoconf(基于尝试使用该功能的所有错误报告)。

手动添加CXXFLAGS="-sysroot=$IOS_SYSROOT -arch arm64 ...似乎可以解决问题。这似乎与Bug 79885: --with-build-sysroot= does not get honored throughout the build详述的问题(或几乎相同的问题)相同。

似乎没有AC_SYSROOT(或类似)将--with-sysroot复制到AM_CXXFLAGS。在Autoconf网站上搜索关键字并未返回有用的匹配:"--with-sysroot" site:https://www.gnu.org/software/autoconf/manual

我们如何处理Autoconf --with-sysroot选项?包装工人应遵循的做法是什么?

以下是Autoconf项目文件:cryptopp-autotools。有两个感兴趣的文件,它们是configure.acMakefile.am。我目前还不确定这个问题的适用范围。

这里是Autoconf告诉用户使用它的消息:

$ ./configure --help | grep sysroot
  --with-sysroot[=DIR]    Search for dependent libraries within DIR (or the
                          compiler's sysroot if not specified).

如果Autoconf无法正确接入--with-sysroot,我更愿意压制消息。否则,用户将填写针对我们的错误报告。

0 个答案:

没有答案