创建一门新的编程语言-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文件的时候会提示找不到外部函数
更多相关文章
- 【Android(安卓)FFMPEG 开发】音视频基础 和 FFMPEG 编译 ( 音视
- android应用程序项目结构-02
- 给android添加busybox
- Android中的数据存储之文件存储、SharedPreferences和Pull解析
- Android轮播图的实现
- 在Android(安卓)Studio上快速导入Eclipse风格
- Android(安卓)Studio官方文档之添加多种密度的矢量图形
- Android下的数据储存方式( 二)
- Android调用so文件(C代码库)方法详解