创建一门新的编程语言-Flex&Bison&LLVM-(6)-LLVM在Android和PC上的编译

各位不好意思,这么久都还没有更新新的一期。这一期我主要想说说编译llvm的过程,包括在PC上和在Android(这么久没更新教程,就是因为在弄Android的LLVM,总是失败)上。


下载llvm源码包:

http://llvm.org/releases/download.html#3.4

选择LLVM source code便可

解压到一个目录

注:以下过程需要您已经安装有CMake,zlib,libxml2,xz

PC编译:

打开msys,并cd进llvm-3.4文件夹,输入:


mkdir win-bdir

cd win-bdir

cmake -G "MSYS Makefiles" ../ -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=`pwd`/../win-out


其中MSYS Makefiles可以按需要换成所需的以生成其他工程文件

接着:


make

make install


make的过程中可能会在llvm-ar的地方报错,但只需要再输入一次make便可(原因应该是windows的文件系统问题)

至此,在llvm-3.4/win-out目录下便有我们所需的文件了

Android编译:

打开msys,并cd进llvm-3.4文件夹,输入:

mkdir and-bdir

cd and-bdir

cmake -G "MSYS Makefiles" ../ -DCMAKE_BUILD_TYPE=Release -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_C_COMPILER=arm-linux-androideabi-gcc -DCMAKE_CXX_COMPILER=arm-linux-androideabi-g++ -DCMAKE_CROSSCOMPILING=True -DCMAKE_INSTALL_PREFIX=`pwd`/../and-out -DLLVM_TABLEGEN=`pwd`/../win-out/bin/llvm-tblgen.exe -DLLVM_DEFAULT_TARGET_TRIPLE='arm-linux-android' -DLLVM_TARGET_ARCH=ARM -DLLVM_TARGETS_TO_BUILD=ARM -DCMAKE_FIND_ROOT_PATH='D:/android-toolchain/sysroot' -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY


上面有几个要注意一下,arm-linux-androideabi-gcc来自于ndk,为用ndk里的make-standalone.sh生成的一个独立工具链,且我把他生成在了D:/android-toolchain(-DCMAKE_FIND_ROOT_PATH='D:/android-toolchain/sysroot'这里记得一定要改!)并在环境变量中把bin目录添加到了path,你也应该这样做

还有就是-DLLVM_TABLEGEN=`pwd`/../win-out/bin/llvm-tblgen.exe这一句,请按需填写自己pc上的llvm-tblgen的位置


make

make install


还是会在llvm-ar的地方出Error,但不用管

llvm-3.4/and-out便是我们需要的文件

但是:里面的lli是不能用的,因为linker自动优化而把一些链接删掉了(总体上看是好事),所以用lli运行ir文件的时候会提示找不到外部函数


你可能感兴趣的:(Flex&Bison教程)