gcc5.4編譯源碼


1. 下載源碼

     wget http://mirrors.kernel.org/gnu/gcc/gcc-5.4.0/gcc-5.4.0.tar.gz

2. 解壓

     sudo tar -xvf gcc-5.4.0.tar.gz

3. 下載編譯所需依賴項:

     cd gcc-5.4.0

     sudo ./contrib/download_prerequisites  //下載依賴項,只能在此目錄下執行

     cd ..

4.  建立編譯輸出目錄

     sudo mkdir gcc-build-5.4.0

5. 進入輸出目錄,執行以下命令,並生成makefile文件

    cd gcc-build-5.4.0

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

6. 編譯

    sudo make -j4

    (若編譯出錯且沒有報錯信息,使用sudo make編譯,此處時間較長)

7. 安裝

    sudo make install

8. 檢查版本

    gcc --version

附編譯報錯信息:

1. 報錯:configure: error: in `/usr/local/src/gcc-5.4.0/build':

    解決:缺少gcc需要先安裝一個任意gcc版本

2. 報錯:dereferencing pointer to incomplete type 'struct ucontext'

    解決:將61行左右struct ucontext * uc_ = context->cfa

              改成  struct ucontext_t * uc_ = context->cfa

3. 報錯:/sanitizer_stoptheworld_linux_libcdep.cc:237:22:

              error: aggregate 'sigaltstack handler_stack' has incomplete type and cannot be defined struct sigaltstack   handler_stack;

    解決:將/sanitizer_stoptheworld_linux_libcdep.cc中第237行

               struct sigaltstack handler_stack;

               修改為:stack_t handler_stack;

4. 報錯:……// sanitizer_linux.h

    解決:將第二行注釋

    struct link_map;  // Opaque type returned by dlopen().

    struct sigaltstack;                                                        

    將 uptr internal_sigaltstack(const struct sigaltstack* ss, struct sigaltstack* oss);

    修改為:uptr internal_sigaltstack(const void* ss, void* oss);

5. 報錯:……// sanitizer_linux.cc

    將uptr internal_sigaltstack(const struct sigaltstack *ss, struct sigaltstack *oss)

    修改為:uptr internal_sigaltstack(const void *ss, void *oss)

6. 報錯:……// sanitizer_stoptheworld_linux_libcdep.cc

    將struct sigaltstack handler_stack;

    修改為: stack_t handler_stack;

 7. 報錯:……//tsan_platform_linux.cc

     將res_state *statp = (__res_state*)state;

     修改為:struct __res_state *statp = (struct __res_state*)state;

 8. 報錯:……// asan_linux.cc

     解決:在asan_linux.cc中添加頭文件#include <signal.h>即可


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM