Linux/Cent OS 6.5 編譯,安裝obfuscator-llvm-3.6.1

o-llvm是基於llvm的代碼混淆工具,當前(2015)最新版本是3.6.1,
 

注意事項:
不要在/mnt/hgfs/目錄下編譯,不但慢,還會出不少問題
 
 

Shtml

tep. 1 安裝依賴

http://blog.csdn.net/linking530/article/details/43852789 (Centos 6.x 下編譯Skynet 須要安裝的依賴)
           #  yum install autoconf
           # yum install libtermcap-devel ncurses-devel libevent-devel readline-devel
 
 
 

 

Step. 2 安裝Lua5.3python

 
 

 一、安裝libreadline 庫: linux

 # sudo yum install readline-devel.i686ios

       

 二、下載源碼c++

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

 # tar -xzvf lua-5.3.1.tar.gzgithub

 

  三、編譯centos

  # cd lua-5.3.1python2.7

  # 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)

 
 
 

1.1 獲取安裝包並解壓

wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2
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+.
參考這個連接解決:
 
# wget ftp://ftp.gnu.org/gnu/gmp/gmp-5.0.1.tar.bz2
# 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
 
========================Error end==================================
 
       

過程當中CPU基本滿載:

1.六、安裝

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
 
       

 

2、驗證安裝

重啓,而後查看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 代碼
 
 
 
 

Step.6 編譯o-llvm

這裏我寫個簡單的,假如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
相關文章
相關標籤/搜索