七天LLVM零基础入门(Linux版本)------第一天

作者:snsn1984

开篇语:

学习LLVM的过程是一个漫长而艰巨的过程,需要大量的时间和精力。不仅仅如此,开始的过程也不轻松。一个好的开始就是成功的一半。我结合了自己学习的过程,以及给别人推荐学习的过程,整理出了这个七天LLVM零基础入门的系列博客。主要的目标是让没有LLVM基础的人,经过这一系列的学习,可以完成一些Pass的工作,并且可以成功的自己去自主学习,知道自己该怎么学习,知道自己该去学些什么。如果你有什么建议,欢迎反馈,欢迎探讨。


第一步,要对LLVM有一个初步的印象
这里, http://llvm.org/  是LLVM的官方网站,如果英语足够好,又有足够的耐心,从这里可以找到你想要的一切。
另外,可以参考我之前的博文: http://blog.csdn.net/snsn1984/article/details/8036032    它简明的告诉你,LLVM是什么。

第二步,看看LLVM到底是什么
我们对LLVM有了一个初步的印象之后,我们还是不知道LLVM具体是什么,那么我们就来看一下。
从    http://llvm.org/releases/download.html#3.2   这里,选择Download LLVM 3.2(3.2是目前发布版本的最新版本,在这个页面也可以看到以前的历史版本)下的
LLVM source code
Clang source code
Compiler RT source code
这三项进行下载,下载后进行解压,解压后应该得到三个名字分别为llvm-3.2.src、clang-3.2.src、compiler-rt-3.2.src。这时候,需要对这三个文件夹进行重命名,llvm-3.2.src重命名可以根据自己习惯,此处推荐重命名为llvm-3.2;clang-3.2.src重命名为clang,并且将此文件夹整体放到llvm-3.2/tools下,包含clang这个顶层文件夹;compiler-rt-3.2.src重命名为compiler-rt,并且将包含顶层文件夹的整体文件夹放到llvm-3.2/projects/下。
此时,打开一个终端,切换到llvm-3.2目录下,依次输入如下命令:
mkdir build
cd build
cmake ../
make
然后就可以在llvm-3.2/build/bin目录下看到一大堆的可执行文件。(此处不使用make install是方便在系统上使用多版本的llvm进行研究和修改。)
这个时候可以运行如下命令,来看看clang:
./clang -v
./clang -help
可以写一个简单的helloworld程序,使用clang进行编译,使用方法和gcc相同:
./clang hello.c
./a.out

第三步:clang是什么
我们刚才编译出来了自己的LLVM,但是我们使用的确是clang。clang到底是什么,我们接下来就来看看:
Clang is an "LLVM native" C/C++/Objective-C compiler, which aims to deliver amazingly fast compiles (e.g. about 3x faster than GCC when compiling Objective-C code in a debug configuration), extremely useful error and warning messages and to provide a platform for building great source level tools. The Clang Static Analyzer is a tool that automatically finds bugs in your code, and is a great example of the sort of tool that can be built using the Clang frontend as a library to parse C/C++ code.
这是官方对clang的简要介绍。
也可参加我之前的博文: http://blog.csdn.net/snsn1984/article/details/8232943   这里简要的介绍了clang的相关知识。

到这个时候,应该可以熟练的使用clang去编译自己的程序了。

-------------------------------------转载请注明出处。--------------------------------------------------

  • 13
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 21
    评论
gcc升级到4.7以上 参考文档 https://blog.51cto.com/191226139/2066137 安装编译依赖软件包 yum install gcc gcc-c++ glibc-static -y cp -a /mnt/backup/software/php-7.3.9.tar.gz /root/ 下载gcc源码包与依赖包 wget -c http://mirror.koddos.net/gcc/releases/gcc-4.8.5/gcc-4.8.5.tar.gz tar -zxvf /root/gcc-src/gcc-4.8.5.tar.gz -C /root/ tar xvf /root/gcc-src/cloog-0.18.4.tar.gz -C /root/gcc-4.8.5/ tar xvf /root/gcc-src/gmp-6.1.2.tar.xz -C /root/gcc-4.8.5/ tar xvf /root/gcc-src/isl-0.14.tar.gz -C /root/gcc-4.8.5/ tar xvf /root/gcc-src/mpc-1.0.3.tar.gz -C /root/gcc-4.8.5/ tar xvf /root/gcc-src/mpfr-3.1.4.tar.gz -C /root/gcc-4.8.5/ 或者 tar xvf /root/gcc-src/mpfr-3.1.4.tar.bz2 -C gcc-4.8.5/ mv /root/gcc-4.8.5/cloog-0.18.4 /root/gcc-4.8.5/cloog mv /root/gcc-4.8.5/gmp-6.1.2/ /root/gcc-4.8.5/gmp mv /root/gcc-4.8.5/isl-0.14/ /root/gcc-4.8.5/isl mv /root/gcc-4.8.5/mpc-1.0.3/ /root/gcc-4.8.5/mpc mv /root/gcc-4.8.5/mpfr-3.1.4/ /root/gcc-4.8.5/mpfr cd /root/gcc-4.8.5/ mkdir gcc-build && cd gcc-build ../configure --prefix=/usr/local/gcc-4.8.5 --enable-checking=release --enable-bootstrap --enable-languages=c,c++ --disable-multilib --enable-gather-detailed-mem-stats --with-long-double-128 出错后清空编译目录下的相关文件 # make distclean 查看CPU的核数,使用时应使用2倍值 lscpu |grep -A 1 'Model name' make -j 4 或者 make 编译过程约40~50分钟左右,占用2.7G空间 make install 检验版本 /usr/local/gcc-4.8.5/bin/gcc -dumpversion /usr/local/gcc-4.8.5/bin/g++ -dumpversion /usr/local/gcc-4.8.5/bin/c++ -dumpversion 添加LD_LIBRARY_PATH 临时生效 export LD_LIBRARY_PATH="/usr/local/gcc-4.8.5/lib64:$LD_LIBRARY_PATH" 永久生效 echo '/usr/local/gcc-4.8.5/lib64' > /etc/ld.so.conf.d/gcc4.8.5.conf ldconfig 出现以下提示,把这个文件删除了或忽略它:ldconfig: /usr/local/gcc-4.8.5/lib64/libstdc++.so.6.0.19-gdb.py is not an ELF file - it has the wrong magic bytes at the start. rm -rf /usr/local/gcc-4.8.5/lib64/libstdc++.so.6.0.19-gdb.py cd /usr/local/gcc-4.8.5/bin && ln -s gcc cc 添加环境变量 echo 'export PATH=/usr/local/gcc-4.8.5/bin:$PATH' >> /etc/profile source /etc/profile 查看版本 gcc -v cc -v
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值