如何为iOS交叉编译clang / llvm?

时间:2014-05-30 04:06:06

标签: ios clang llvm cross-compiling

如何为iOS交叉编译clang / llvm?我需要在我的iOS应用程序中通过C API使用libclang(我相信.a或.dylib)。

2 个答案:

答案 0 :(得分:9)

# Get LLVM/Clang

mkdir llvm
curl -O http://llvm.org/releases/3.4/llvm-3.4.src.tar.gz
tar xzfv llvm-3.4.src.tar.gz
cd llvm-3.4/tools/
curl -O http://llvm.org/releases/3.4/clang-3.4.src.tar.gz
tar xzfv clang-3.4.src.tar.gz
mv clang-3.4 clang
cd ..

# Assuming Xcode 5.1 (LLVM 3.5+ requires -stdlib=libc++ as well)

export CC="clang -arch armv7 -mios-version-min=5.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk"
export CXX="clang++ -arch armv7 -mios-version-min=5.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk"

mkdir build
cd build

../configure \
  --prefix=/Users/thomas/tmp/llvm-ios \
  --host=arm-apple-darwin11 \
  --enable-optimized \
  --disable-assertions

unset CC CXX # important! (Otherwise the next step will fail)

make VERBOSE=1 -j...

过了一会儿,你会得到:

/Users/thomas/tmp/llvm-3.4/lib/Support/Unix/Program.inc:46:10: fatal error: 'crt_externs.h' file not found
#include <crt_externs.h> // _NSGetEnviron
         ^

评论头文件并将_NSGetEnviron()的呼叫破解(你会得到这三次)

make install

答案 1 :(得分:0)

在Cydia的iOSToolChain

https://coolstar.org/publicrepo/

iOS上的Clang和LLVM。

我在越狱设备上使用它来编译iOS的应用程序(ARM 32位或ARM 64位)。

这里有一篇很好的参考文章:Compile IOS program from linux commandline