您的位置:首页 > 运维架构 > Linux

Linux/Cent OS 6.5 编译,安装obfuscator-llvm-3.6.1

2015-11-24 21:21 716 查看
o-llvm是基于llvm的代码混淆工具,当前(2015)最新版本是3.6.1,
git地址:https://github.com/obfuscator-llvm/obfuscator/tree/llvm-3.6.1

注意事项:
不要在/mnt/hgfs/目录下编译,不但慢,还会出很多问题

S

tep. 1 安装依赖

http://blog.csdn.net/linking530/article/details/43852789 (Centos 6.x 下编译Skynet 需要安装的依赖)
# yum install autoconf
# [b]yum install libtermcap-devel ncurses-devel libevent-devel readline-devel[/b]




Step. 2 安装Lua5.3

1、安装libreadline 库:

# sudo yum install readline-devel.i686

2、下载源码

# wget http://www.lua.org/ftp/lua-5.3.1.tar.gz
# tar -xzvf lua-5.3.1.tar.gz

3、编译

# cd lua-5.3.1

# make linux

# sudo cp src/lua /usr/bin

# sudo cp src/luac /usr/bin

4. 拷贝头文件到include目录

# cp lua-5.3.1/src/*.h /usr/include/

Step.3 升级Python到2.7

原文链接: http://www.aiplaypc.com/31.html

centos6.5的python版本默认是2.6.6,可能有的时候我们需要升级到更高的版本,那就来动手升级下吧。我这里以2.7.8版本为例,根据实际需要选择升级版本即可。

yum install -y gcc gcc-c++ make readline-devel wget
wget https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz

安装

tar zxvf Python-2.7.8.tgz
cd Python-2.7.8
./configure --prefix=/usr/local/python27
make && make install

一路下来没有报错,可以试试以下命令

/usr/local/python27/bin/python2.7 -V

如果看到输出python2.7.8,就说明安装成功了

配置

创建一个链接来使系统默认python变为python2.7

ln -fs /usr/local/python27/bin/python2.7 /usr/bin/python

接下来修改/usr/bin/yum文件,不然yum会用不了,只需将将第一行的
#!/usr/bin/python
改成
#!/usr/bin/python2.6

到此升级python完毕。

Tips: 因为系统有很多软件会依赖python2.6,所以升到2.7后会导致很多软件不能用,这里只改了yum的,其他的如果不能正常工作,也要修改为引用py26,
不过BAT服务端只改这个就行了。

Step. 4 gcc升级到4.8.2(或更高,会用到C++11)

原文链接: http://www.linuxidc.com/Linux/2015-01/112595.htm

1.1 获取安装包并解压

wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2[/code] 
tar -jxvf gcc-4.8.2.tar.bz2


当然,http://ftp.gnu.org/gnu/gcc 里面有所有的gcc版本供下载,最新版本已经有4.9.2啦.

1.2 下载供编译需求的依赖项

参考文献[1]中说:这个神奇的脚本文件会帮我们下载、配置、安装依赖库,可以节约我们大量的时间和精力。

cd gcc-4.8.0 
./contrib/download_prerequisites 

上面这个脚本主要是安装gmp,mpfr,mpc的,如果安装失败可以参考下面1.4里的sina blog那个链接手动安装(非常繁琐)

别放到/mnt/hgfs/里面一般不会失败。


1.3 建立一个目录供编译出的文件存放

mkdirgcc-build-4.8.2
cd gcc-build-4.8.2


1.4 生成Makefile文件

../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib


我在这一步报错了:

Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.
参考这个链接解决:

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

# wget ftp://ftp.gnu.org/gnu/gmp/gmp-5.0.1.tar.bz2 # wget http://ftp.gnu.org/gnu/mpfr/mpfr-3.1.3.tar.xz
# wget ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.2.tar.gz
# tar -jxf gmp-5.0.1.tar.bz2
# tar -xf mpfr-3.1.3.tar.xz
# tar -xf mpc-1.0.2.tar.gz

...
后续操作参考上面的Blog, 使用的版本跟作者提供的不一样,写命令的时候注意,装完后再去gcc的build目录执行configure

# ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib --with-gmp=/usr/local/gmp-5.0.1 --with-mpfr=/usr/local/mpfr-3.1.3 --with-mpc=/usr/local/mpc-1.0.2

1.5 编译(注意:此步骤非常耗时)

先装cpp编译器

yum install -y gcc-c++


再编译

make -j4


-j4选项是make对多核处理器的优化,如果不成功请使用 make,相关优化选项可以移步至参考文献[2]。

====================会有可能遇到几个错误=========================

Error 1

我在安装此步骤时候出错,错误描述:

compilation terminated.
make[5]: *** [_gcov_merge_add.o] 错误 1make[5]: Leaving directory `/home/imdb/gcc-4.8.2/gcc-build-4.8.2/x86_64-unknown-linux-gnu/32/libgcc'
make[4]: *** [multi-do] 错误 1make[4]: Leaving directory `/home/imdb/gcc-4.8.2/gcc-build-4.8.2/x86_64-unknown-linux-gnu/libgcc'
make[3]: *** [all-multi] 错误 2make[3]: *** 正在等待未完成的任务....
make[3]: Leaving directory `/home/imdb/gcc-4.8.2/gcc-build-4.8.2/x86_64-unknown-linux-gnu/libgcc'
make[2]: *** [all-stage1-target-libgcc] 错误 2make[2]: Leaving directory `/home/imdb/gcc-4.8.2/gcc-build-4.8.2'
make[1]: *** [stage1-bubble] 错误 2make[1]: Leaving directory `/home/imdb/gcc-4.8.2/gcc-build-4.8.2'
make: *** [all] 错误 2


大概看看,错误集中在 x86_64unknown-linux-gnu/32/libgcc 和 x86_64-unknown-linux-gnu/libgcc

根据参考文献[3],安装如下两个软件包(仅用于CentOS6.X):

sudo yum -y install glibc-devel.i686 glibc-devel


Error 2

configure: error: cannot compute suffix of object files: cannot compile, 则执行下面这条命令(路径根据自己的改):

# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc-1.0.2/lib:/usr/local/gmp-5.0.1/lib:/usr/local/mpfr-3.1.3/lib

参考:http://blog.csdn.net/linuxarmsummary/article/details/8545968

========================Error end==================================



过程中CPU基本满载:



1.6、安装

sudo make install


zy: 这个地方 make install后,编译出来的libstdc++.so.6.0.18被拷贝到了 /usr/local/lib64 目录内,而且/usr/lib64内的链接也没有

改,所以编译时会报错:/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14' not found

这里参考下面这个帖子解决:http://m.blog.csdn.net/blog/u012317833/25076147

# cp /usr/local/lib64/libstdc++.so.6.0.18 /usr/lib64

# ln -sf /usr/lib64/libstdc++.so.6.0.18 /usr/lib/libstdc++.so.6

# ldconfig



二、验证安装

重启,然后查看gcc版本:

gcc -v


尝试写一个C++11特性的程序段 tryCpp11.cc,使用了shared_ptr

1//tryCpp11.cc 2 #include <iostream>
3 #include <memory>
4 5int main()
6 {
7     std::shared_ptr<int> pInt(newint(5));
8     std::cout << *pInt << std::endl;
9return0;
10 }


验证文件:

g++ -std=c++11 -o tryCpp11 tryCpp11.cc
./tryCpp11


Linux升级GCC 4.8.1清晰简明教程(Ubuntu 12.04 64位版为例) http://www.linuxidc.com/Linux/2014-04/99583.htm

在CentOS 6.4中编译安装GCC 4.8.1 + GDB 7.6.1 + Eclipse 在CentOS 6.4中编译安装GCC 4.8.1 + GDB 7.6.1 + Eclipse

Ubuntu下Vim+GCC+GDB安装及使用 http://www.linuxidc.com/Linux/2013-01/78159.htm

Ubuntu下两个GCC版本切换 http://www.linuxidc.com/Linux/2012-10/72284.htm

GCC 的详细介绍请点这里
GCC 的下载地址请点这里

更多CentOS相关信息见CentOS 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=14

本文永久更新链接地址http://www.linuxidc.com/Linux/2015-01/112595.htm

Step.5 下载o-llvm 代码
# git clone https://github.com/obfuscator-llvm/obfuscator.git

或者下载zip包: https://github.com/obfuscator-llvm/obfuscator/tree/llvm-3.6.1

Step.6 编译o-llvm

https://github.com/obfuscator-llvm/obfuscator/blob/llvm-3.6.1/docs/GettingStarted.rst

官方文档,写的很详细。

这里我写个简单的,假如o-llvm的代码下载在 obfuscator-llvm-3.6.1 文件夹内
# cd obfuscator-llvm-3.6.1
# mkdir build
# cd build
# ../configure

if no errors then
# make -j4
耗时极长,4核2G内存,编了几个小时

Step.7 安装o-llvm

在第6步的目录内执行
# make install-clang
# make install-libs

验证安装是否成功:
clang -v

end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: