创建一门新的编程语言-Flex&Bison&LLVM-(6)-LLVM在And
各位不好意思,这么久都还没有更新新的一期。这一期我主要想说说编译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文件的时候会提示找不到外部函数 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |