llvm编译说明-创新互联

llvm是一个新开源的编译器,笔者因为工作关系,尝试使用了一下llvm,现在将llvm编译说明总结如下:

创新互联是一家集网站建设,射洪企业网站建设,射洪品牌网站建设,网站定制,射洪网站建设报价,网络营销,网络优化,射洪网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

官方的llvm的说明如下网页,主要使用的指令是

https://github.com/obfuscator-llvm/obfuscator/wiki/Installation

$ git clone -b llvm-3.4 https://github.com/obfuscator-llvm/obfuscator.git
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE:String=Release ../obfuscator/
$ make -j5

其中这里需要注意一点 cmake的版本要在 2.8以上,而我测试的机器是

Red Hat Enterprise Linux Server release 6.2 (Santiago)

里面自带的yum 升级cmake 只能到 2.6 这点和ubuntu apt-get 差异还是很大

放弃了用yum源升级后,就需要直接编译cmake源码的方式来安装cmake了

1  编译cmake

下载地址

http://www.cmake.org/download/

我下载的是 Previous Release (2.8.12.2) 这个版本

下载完成后

[root@zck]# cd /usr/local
[root@zck]# tar -zxv -f cmake-2.8.10.2.tar.gz // 解压压缩包
[root@zck]# rm -rf cmake-2.8.12.2.tar.gz // 删除压缩包
[root@zck]# cd cmake-2.8.12.2
[root@localhost cmake-2.8.12.2]# ./configure
[root@localhost cmake-2.8.12.2]# make
[root@localhost cmake-2.8.12.2]# make install
[root@zck]# mv cmake-2.8.10.2 cmake // 修改文件夹名

这些命令,还好挺顺利的,一切良好

然后再通过

PATH=/usr/local/cmake/bin:$PATH

export PATH

这样的指令 将cmake给安装到系统中,终于搞定了cmake

2  编译 llvm

$ git clone -b llvm-3.4 https://github.com/obfuscator-llvm/obfuscator.git
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE:String=Release ../obfuscator/

这几条指令执行顺利,

但是执行到最后一条 make -j5的时候各种出错。

后来看了一下系统的 gcc,竟然是 4.4.6的版本,后来尝试了用 make 不加多核编译的选项

竟然能够慢吞吞的进行编译了,但是并不顺利,编译到百分之70多的时候,还是出错了,

看来只能升级 gcc了

3 编译gcc-4.7.2

参考链接

http://blog.sina.com.cn/s/blog_a2ef07450101lo1h.html

首先从 https://gcc.gnu.org/install/download.html

官网找到一个镜像下载了 gcc的tar包,上传到服务器上,解压缩后,首先运行

./contrib/download_prerequisites

下载依赖的库文件

中间出现了一个

wget: unable to resolve host address的错误

解决办法:

登入root(VPS)。

进入/etc/resolv.conf。

修改内容为下

nameserver 8.8.8.8 #google域名服务器

nameserver 8.8.4.4 #google域名服务器

根据gcc编译说明,需要在gcc源文件的目录下建好一个目录用于编译gcc代码

建好目录后,进入目录运行 configure文件

配置选项为

../configure --prefix=/usr/local/gcc-4.7.2  --enable-languages=c,c++

表示只选择 c和c++两种语言

同时指定 make install 的路径是 /usr/local/gcc-4.7.2 这个路径

  make -j4 开始编译

  一会儿就出现了

  Error “gnu/stubs-32.h: No such file or directory” while compiling Nachos source code

  yum install glibc-devel.i686  修改之

  继续编译

经过漫长的时间编译完成以后,gcc终于编译完成了,然后使用

sudo make install 命令

在/usr/local/gcc-4.7.2 下面将gcc安装成功。

4 再次编译 llvm

首先需要重新cmake一下,这次cmake需要指定编译器,要指定刚刚安装的gcc-4.7 这个编译器

cmake -DCMAKE_BUILD_TYPE:String=Release -DCMAKE_C_COMPILER=/usr/local/gcc-4.7.2/bin/gcc  -DCMAKE_CXX_COMPILER=/usr/local/gcc-4.7.2/bin/g++ ../obfuscator/

用上面的那个命令,将obfuscate

cmake的相关选项

CMAKE_C_COMPILER:指定C编译器

CMAKE_CXX_COMPILER:

CMAKE_C_FLAGS:编译C文件时的选项,如-g;也可以通过add_definitions添加编译选项

EXECUTABLE_OUTPUT_PATH:可执行文件的存放路径

LIBRARY_OUTPUT_PATH:库文件路径

CMAKE_BUILD_TYPE::build 类型(Debug, Release, ...),CMAKE_BUILD_TYPE=Debug

BUILD_SHARED_LIBS:Switch between shared and static libraries

example

set(CMAKE_C_COMPILER "/usr/bin/gcc-4.7")

5  运行 clang-3.4

运行clang-3.4 发现依然出现了错误,说是缺少一个g++的lib库,

/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found

这个时候我们已经有了

编译好的gcc-4.7,只需要设置一下环境变量 LD_LIBRARY_PATH 即可,设置完成以后,再次

运行 clang ,运行正常

环境变量设置 LD_LIBRARY_PATH

LD_LIBRARY_PATH=/usr/local/gcc-4.7.2/lib64/

export LD_LIBRARY_PATH

echo $LD_LIBRARY_PATH

LD_LIBRARY_PATH=

export LD_LIBRARY_PATH

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


标题名称:llvm编译说明-创新互联
URL地址:http://csdahua.cn/article/cegpij.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流