您好,登錄后才能下訂單哦!
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
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。