我对ARM有兴趣,尤其是iPhone/Android目标。但我想更多地了解clang,因为它在未来几年中扮演重要角色。
我尝试过。
clang -cc1 --help|grep -i list
clang -cc1 --help|grep arch|grep -v search
clang -cc1 --help|grep target
-triple <value> Specify target triple (e.g. i686-apple-darwin9)
我知道clang有一个-triplet参数,但是如何列出所有可能的值呢?
我发现,在交叉编译方面,clang与gcc非常不同。在GCC世界中,你应该为每个东西都有单独的二进制文件,比如PLATFORM_make或PLATFORM_ld(i*86-pc-cygwin i*86-*-linux-gnu等http://git.savannah.gnu.org/cgit/libtool.git/tree/doc/PLATFORMS)。
在clang世界中,只有一个二进制文件(正如我在一些论坛上所读到的)。但是,如何获取支持的目标列表?如果我的目标在我的发行版上不受支持(Linux/Windows/macOS/任何其他系统),那么我该如何获得支持更多平台的目标?
如果我像这样SVN最新的clang:
svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
我会获得大多数平台吗?
看起来 Clang 最初并不是为交叉编译而构建的,但由于它基于 LLVM,理论上应该非常适合跨平台。