• Building GCC 4.1.2 in CentOS 7 for Maya API development


    Following the official guid:

    http://help.autodesk.com/cloudhelp/2015/ENU/Maya-SDK/files/Setting_up_your_build_environment_Linux_environments_32bit_and_64bit.htm

    I still encountered several errors, and here is the way how I came out.

    Here is the steps in the offical guid, and I add my annotation.

    Download the gcc 4.1.2 source tar file from http://gcc.gnu.org/install/ // I download the package in this page: https://gcc.gnu.org/releases.html
    
    Setup directories: 
     % mkdir gcc412    // My directory is /home/user0/tools/gcc412
     % cd gcc412
     % mkdir gcc-build // My directory is /home/user0/tools/gcc412/build
    
    Extract the source files:
     % tar zxvf gcc-4.1.2.tar.gz  // I unzip the package in /home/user0/tools/gcc412/src
     % cd gcc-build               // for me, it is /home/user0/tools/gcc412/build
    
    Configure the compiler. Run the following all on 1 line:
    ../src/configure --prefix=/opt/gcc412 --program-suffix=412 --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --disable-libunwind-exceptions --enable-__cxa_atexit
    
    Build the compiler:
     % make -j 2 bootstrap
    Note:
    0. you need to install glibc-devel.i686, you can run this command:
    #yum install glibc-devel.i686

    1. It may fail if your display driver is nvidia-x11-drv-340.32-1. You have to update your display driver to nvidia-x11-drv-340.32-2. If you installed nvidia-x11-drv-340.32-1 with Nvidia installer, you can read this post for updating your driver: nvidia-xhttps://www.centos.org/forums/viewtopic.php?t=24137,
    And if you installed
    1nvidia-x11-drv-340.32-1 with yum, you can use the following commands to update your driver:
    #yum clean all
    #yum --disablerepo=* --enablerepo=elrepo install kmod-nvidia nvidia-x11-drv
    #yum --disablerepo=* --enablerepo=elrepo install nvidia-x11-drv-32bit

    (See this post for more details: https://www.centos.org/forums/viewtopic.php?f=48&t=48236)


    2. It has a compiling error when you build gcc4.1.2:
    ../gcc/config/i386/linux-unwind.h:138:17: error: field 'info' has incomplete type "

    And here is the solution: http://forge.ispras.ru/issues/4295
    It means that you need to change the code on line 136 in linux-unwind.h:
    struct rt_sigframe {
        int sig;
        struct siginfo *pinfo;
        void *puc;
        struct siginfo info;
    } *rt_ = context->cfa;
    to
    struct rt_sigframe {
        int sig;
        siginfo_t *pinfo;
        void *puc;
        siginfo_t info;
        struct ucontext uc;
    } *rt_ = context->cfa;
    You can download the modified file in http://files.cnblogs.com/yaoyansi/gcc412_build.zip.

    3. It has a link error: .libs/libgcj.so: undefined reference to `__cxa_call_unexpected'.
    And here is the solution: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=50888, it shows you how to modify libjava/prims.cc.
    You can download the modified file in http://files.cnblogs.com/yaoyansi/gcc412_build.zip,
    After you modify /home/user0/tools/gcc412/src/libjava/prims.cc, remove /home/user0/tools/gcc412/build/gcc/gcc.o and build it again.

    4. It complains:
    creating gij
    GC Warning: Repeated allocation of very large block (appr. size 1048576000):
    May lead to memory leak and poor performance.
    GC Warning: Out of Memory! Returning NIL!
    GC Warning: Repeated allocation of very large block (appr. size 1048576000):
    May lead to memory leak and poor performance.
    GC Warning: Out of Memory! Returning NIL!
    Exception during runtime initialization
    java.lang.OutOfMemoryError
    <<No stacktrace available>>

    In /home/user0/tools/gcc412, I searched all 
    gij.o and gcc.o, and removed them, then built it again.

    Install compiler as root: % su root % make install    // gcc412 is installed in 
    /opt/gcc412/ Note: you can make a symlink in /usr/bin to make the call to gcc easier for the user: % cd /usr/bin % ln -s /opt/gcc412/bin/gcc412 . % ln -s /opt/gcc412/bin/g++412 .
  • 相关阅读:
    315. 计算右侧小于当前元素的个数
    55. 跳跃游戏
    <leetcode c++>72. 编辑距离
    "NTLDR is missing"和"NTLDR is compressed"的解决办法
    Windows Live Mail不能发送图片附件的2种解决方法
    【】使用word2010同步更新自己在不同网站的博客
    新浪博客测试
    【】引用 CSS行高line-height属性理解及应用
    "NTLDR is missing"和"NTLDR is compressed"的解决办法
    排序算法-冒泡排序(javascript)
  • 原文地址:https://www.cnblogs.com/yaoyansi/p/3950484.html
Copyright © 2020-2023  润新知