精华内容
下载资源
问答
  • 更新linux gcc版本到gcc 4.4.2

    万次阅读 热门讨论 2010-01-17 16:17:00
    更新linux gcc版本到gcc 4.4.2首先需要准备需要材料:gcc4.4.2版需要安装gmp4.2.0+和mpfr2.3.0+,到GMP的网站(http://gmplib.org/)上下载gmp-4.3.1.tar.gz 和mprf的网站(http://www.mpfr.org/)上下载mpfr-2.4.2....

    更新linux gcc版本到gcc 4.4.2

    首先需要准备需要材料:gcc4.4.2版需要安装gmp4.2.0+和mpfr2.3.0+,到GMP的网站(http://gmplib.org/)上下载gmp-4.3.1.tar.gz 和mprf的网站(http://www.mpfr.org/)上下载mpfr-2.4.2.tar.gz

    1. 安装gmp
    # wget
    ftp://ftp.gmplib.org/pub/gmp-5.0.0/gmp-5.0.0.tar.bz2
    # tar -zxvf gmp-4.3.2.tar.gz
    # cd gmp-4.3.2
    # ./configure
    # make
    # make check
    这一步用来查看有没有文件不匹配或缺失,然后安装:
    # make install

    2. 安装mpfr
    # wget
    http://www.mpfr.org/mpfr-current/mpfr-2.4.2.tar.gz
    # tar -zxvf mpfr-2.4.2.tar.gz
    # cd mpfr-2.4.2
    配置:
    # ./configure --with-gmp-include=/usr/local/include --with-gmp-lib=/usr/local/lib
    # make
    # make check
    接下来安装:
    # make install
    打包成tar.gz, 需要xz(LZMA)支持;
    http://tukaani.org/xz/ 提供下载
    # make dist

    准备工作完成,以下是gcc的安装与更新.

    3. 编译安装gcc

    从GCC官网(http://gcc.gnu.org/)下载资源gcc源代码, 当前gcc版本为gcc-4.4.2.

    # wget ftp://ftp.dti.ad.jp/pub/lang/gcc/releases/gcc-4.4.2/gcc-4.4.2.tar.gz
    # tar xzvf gcc-4.4.2.tar.gz

    建立目标目录, 目标目录是用来存放编译结果的地方
    # mkdir gcc-build
    # cd gcc-build

    配置gcc, 这里只选择了c,c++.

    # ../gcc-4.4.2/configure  --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-libgcj-multifile --enable-languages=c,c++,objc,obj-c++ --with-cpu=generic --disable-dssi --enable-plugin --prefix=/usr/local/gcc-4.4.2 --with-gmp=/usr/local --with-mpfr=/usr/local

    编译
    # make

    安装, 需要管理员的权限,如为普通用户使用su 命令切换到root用户.
    # make install

    至此,GCC 就安装 完成了.

    4. 环境设置

    将gcc的头文件和库文件指向新的版本
    cd $HOME
    ls -a
    sudo vi .bashrc

    向其中添加以下语句。

    GCCHOME=/usr/local/gcc-4.4.2
    PATH=$GCCHOME/bin:$PATH
    LD_LIBRARY_PATH=$GCCHOME/lib
    export GCCHOME PATH LD_LIBRARY_PATH

    5. 测试
    重新引导,查看gcc版本
    # source $HOME/.bashrc
    # # which  gcc
    /usr/local/gcc-4.4.2/bin/gcc
    会显示gcc新的路径为 /usr/local/gcc-4.4.2

    # gcc -v
    Using built-in specs.
    Target: i686-pc-linux-gnu
    Configured with: ../gcc-4.4.2/configure --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-libgcj-multifile --enable-languages=c,c++,objc,obj-c++ --with-cpu=generic --disable-dssi --enable-plugin --prefix=/usr/local/gcc-4.4.2 --with-gmp=/usr/local --with-mpfr=/usr/local
    Thread model: posix
    gcc version 4.4.2 (GCC)

    显示gcc的版本为4.4.2

     

    展开全文
  • linux gcc 头文件搜索路径

    千次阅读 2012-06-30 16:10:58
    linux gcc 头文件搜索路径 2011-02-15 13:40 423人阅读 评论(0) 收藏 举报 一、头文件   gcc 在编译时寻找所需要的头文件 :   ※搜寻会从-I开始   ※然后找gcc的环境变量 C_INCLUDE_PATH,C...

    linux gcc 头文件搜索路径

     423人阅读 评论(0) 收藏 举报

    一、头文件
      
    gcc 在编译时寻找所需要的头文件 :
      
    ※搜寻会从-I开始
      
    ※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH
      
    ※再找内定目录
    /usr/include

    /usr/local/include
    /usr/lib/gcc-lib/i386-linux/2.95.2/include
    /usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g++-3
    /usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include
      
    库文件但是如果装gcc的时候,是有给定的prefix的话,那么就是
    /usr/include

    prefix/include
    prefix/xxx-xxx-xxx-gnulibc/include
    prefix/lib/gcc-lib/xxxx-xxx-xxx-gnulibc/2.8.1/include
      
    二、库文件
    编译的时候:
    ※gcc会去找-L
    ※再找gcc的环境变量LIBRARY_PATH
      
    ※再找内定目录 /lib:/usr/lib: /usr/local/lib:这是当初compile gcc时写在程序内的

    三、运行时动态库的搜索路径

    1、在配置文件/etc/ld.so.conf中指定动态库搜索路径

    2、通过环境变量LD_LIBRARY_PATH指定动态库搜索路径(当通过该环境变量指定多个动态库搜索路径时,路径之间用冒号":"分隔)
      
    3、在编译目标代码时指定该程序的动态库搜索路径(还可以在编译目标代码时指定程序的动态库搜索路径。
      
    这是通过gcc 的参数"-Wl,-rpath,"指定。当指定多个动态库搜索路径时,路径之间用冒号":"分隔
    4、默认的动态库搜索路径/lib    /usr/lib
    可以通过执行可执行文件pos得到的结果不同获知其搜索到了哪个动态库,从而获得第1个动态库搜索顺序,然后删除该动态库,
      
    再执行程序pos,获得第2个动态库搜索路径,再删除第2个被搜索到的动态库,
      
    如此往复,将可得到Linux搜索动态库的先后顺序。
    程序pos执行的输出结果和搜索到的动态库的对应关系如表1所示
      
    程序pos输出结果 使用的动态库 对应的动态库搜索路径指定方式
    ./ ./libpos.so 编译目标代码时指定的动态库搜索路径
      
    /root/test/env/lib /root/test/env/lib/libpos.so 环境变量LD_LIBRARY_PATH指定的动态库搜索路径
      
    /root/test/conf/lib /root/test/conf/lib/libpos.so 配置文件/etc/ld.so.conf中指定的动态库搜索路径
      
    /lib /lib/libpos.so 默认的动态库搜索路径/lib
      
    /usr/lib /usr/lib/libpos.so 默认的动态库搜索路径/usr/lib
      
    动态库的搜索路径搜索的先后顺序是:
      
    1.编译目标代码时指定的动态库搜索路径;
    2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径;

    3.配置文件/etc/ld.so.conf中指定的动态库搜索路径;
    4.默认的动态库搜索路径/lib    /usr/lib。

    展开全文
  • Ubuntu12.4 64位 安装 arm linux gcc 4.3.2

    千次阅读 2014-01-25 12:01:57
    下载arm linux gcc 4.3.2 http://pan.baidu.com/share/link?shareid=1575352696&uk=2754759285&fid=2185900163 二.安装arm linux gcc 4.3.2 1.复制arm-linux-gcc-4.3.2.tgz到根目录下tmp文件夹里 2.将文件解压到/...

    一.下载arm linux gcc 4.3.2

    http://pan.baidu.com/share/link?shareid=1575352696&uk=2754759285&fid=2185900163

    二.安装arm linux gcc 4.3.2

    1.复制arm-linux-gcc-4.3.2.tgz到根目录下tmp文件夹里

    2.将文件解压到/usr/local目录下

    解压命令tar xvzf arm-linux-gcc-4.3.2 -C /
     注意以上命令必须要有-C而且是大写的,还有就是C与/之间有个空格

    解压后的目录结构是这样的:/usr/local/arm/4.3.2

    3.将路径/usr/local/arm/4.3.2/bin添加到环境变量PATH中

    修改/root/.bashrc文件

    #vim /root/.bashrc

    在文件后面加上以下代码

    export PATH=$PATH:/usr/local/arm/4.3.2/bin

    为了保证成功还可以编辑/etc/profile文件

    #vim /etc/profile

    也是在后面加上以下代码

    PATH=$PATH:/usr/local/arm/4.3.2/bin

    保存后再执行命令

    #source /etc/profile

    使profile文件生效

    4.测试安装是否成功

    1)重启系统,输入命令

    #arm-linux-gcc -v

    如果安装成功将会输出 arm-linux-gcc的版本号


    2)编译Hello World程序,测试交叉工具链

    写下下面的Hello World程序,保存为hello.c

    #include <stdio.h>
    int main()
    {
    printf("Hello World!\n");
    return 0;
    }
       执行下面的命令:
    # arm-linux-gcc -o hello hello.c
       源程序有错误的话会有提示,没有任何提示的话,就是通过了,就可以下载到ARM目标板上运行了!
    接着可以输入filehello的命令,查看生成的hello文件的类型,要注意的是生成的可执行文件只能在ARM体系下运行,不能在其于X86的PC机上运行。


    三.遇到的问题

    如果安装的64位的Ubuntu的话,执行

    #arm-linux-gcc -v

    会遇到/usr/local/arm/4.3.2/bin/arm-linux-gcc: line 3: /usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-gcc: No such file or directory的问题

    这时只要安装32位的兼容库就行了

    #sudo apt-get install libncurses5:i386

    在64位下,gcc默认编译代码位64位的,但是,如果你想编译位的,可以用gcc -m32选项,来设置。

    不过,不幸的是,会出现错误,说找不到 /usr/include/features.h文件什么的。google一下,发现用这种方法:

    sudo apt-get install g++-multilib

    就可以了。

    四.参考资料

    http://www.360doc.com/content/11/1211/13/1317564_171441865.shtml

    http://blog.csdn.net/doon/article/details/8053174

    http://blog.csdn.net/fulinus/article/details/8648384

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



    展开全文
  • linux gcc 预编译

    千次阅读 2010-07-06 18:31:00
    linux gcc 预编译 命令:gcc -E test.c -o test.i   预编译主要完成以下功能: 1.删除所有的注释“//”和“/**/”; 2.删除所有的“#define”,展开所有的宏定义; 3.处理所有的...

    linux gcc 预编译
    命令:gcc -E test.c -o test.i

     

    预编译主要完成以下功能:
    1.删除所有的注释“//”和“/**/”;
    2.删除所有的“#define”,展开所有的宏定义;
    3.处理所有的条件预编译指令;
    4.处理“#include”预编译指令,将被包含的文件插入到该预编译指令的位置,这一过程是递归进行的;
    5.添加行号和文件名标识;

     

    例:

    源文件(test.c)如下:

    #include <stdio.h>

    #define MY_SIZE 1000000

    //this is a test
    /*this
    is
    a
    test
    !
    */

    int main(int argc,char* argv[])
    {
        char *test=NULL;
        while(1)
        {
            test = NULL;
            test = new char[MY_SIZE];
            if(test == NULL)
            {
                printf("I am wrong/n");
                break;
            }
            printf("a../n");
        }
        printf("I am ok!/n");
        return 0;
    }

     

    预编译后文件内容(test.i)如下:

    。。。//此处略过一大段头文件插入内容

    extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__)) ;


    extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__));
    # 850 "/usr/include/stdio.h" 3 4

    # 2 "abc.c" 2
    # 13 "abc.c"
    int main(int argc,char* argv[])
    {
        char *test=((void *)0);
        while(1)
        {
            test = ((void *)0);
            test = new char[1000000];
            if(test == ((void *)0))
            {
                printf("I am wrong/n");
                break;
            }
     printf("a../n");
        }
        printf("I am ok!/n");
        return 0;
    }

    展开全文
  • Linux gcc和gdb程序调试用法

    千次阅读 2013-03-09 15:38:17
    Linux gcc和gdb程序调试用法 gcc一般调试格式: gcc -Wall -o test test.c // -wall 显示程序错误详细信息  gcc -v // 显示gcc的版本 gcc -o{1,2,3} test test.c // 1,2,3三个级别的优化,优化级别越高编译的...
  • linux gcc编译常用命令之gun工具链的使用 Binutils源码工具包中的常用命令: gcc g++ ld ldd nm strings readelf addr2line strip objcopy as ar gdb 1、gcc/g++编译器 示例: gcc -c test.c gcc -
  • root@test-desktop:~# gcc -E -dM - </dev/null #define __DBL_MIN_EXP__ (-1021) #define __FLT_MIN__ 1.17549435e-38F #define __CHAR_BIT__ 8 #define __WCHAR_MAX__ 2147483647 #define __GCC_HAVE_SYNC_...
  • Linux GCC 64位编程技巧

    万次阅读 2010-10-17 19:48:00
    Linux GCC 64位编程技巧,项目要用到,上网查了一下,资料虽多,但零零散散,干脆自己整理一份,共享给大家。 Windows和Linux类似,但有的细节还需要大家自己查了。
  • Linux gcc编译命令

    万次阅读 2018-11-19 19:40:57
    gcc -o 指定文件名 文件(gcc -o hello hello.c) 这样我们就编译好了这个代码,重新打开文件夹(一般是home)会发现多了一个hello文件 然后我们在命令行输入: ./文件名(./hello) 就能得到输出( “.” ...
  • linux gcc版本如何升级到gcc4.8.2

    千次阅读 2017-09-29 14:12:27
    一、简易安装 操作环境 Red-hat 6.2 64bit,yum安装自带版本...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
  • linux gcc/g++编译安装 gcc7.5.0 c++17

    千次阅读 2019-11-20 16:08:51
    linux C++17编译:编译指定参数 -std=c++17 编译指定参数 -std=c++17 例:g++ -std=c++17 main.cpp #如果编译器不支持c++17就会提示:g++: error: unrecognized command line option ‘-std=c++17’ 方法: 1.下载高...
  • linux gcc和g++降级方法

    千次阅读 2019-08-26 18:41:50
    linux中编译一些代码时,会遇到gcc 和g++版本过高,或者版本不一致的问题,因此会将gcc或g++降级。 以从gcc - 5.4或g++ - 5.4降级到4.8版本为例,具体方法如下: 当前版本查询:      ...
  • linux gccgcc-c环境安装

    千次阅读 2018-03-29 16:59:58
    系统环境 gun/linux 2013 x64权限:root系统无法上网只能通过rpm包方式安装所有资源下载地址https://download.csdn.net/download/qq_25713179/10316034全部上传到/usr/local/src目录执行以下命令rpm -Uvh ppl-0.10.2...
  • Linux c与gcc的区别 Linux CC与Linux GCC的区别概括介绍。从名字上看,老的unix系统的CC程序叫做C Compiler。但GCC这个名字按GNU的说法叫做Gnu Compiler Collection。因为gcc包含很多编译器(C, C++, Objective-C, ...
  • Linux GCC中,如果lib a依赖b,b又依赖a,链接的时候无论a放在前,还是b放在前,都会提示unrefrence。 解决办法就是: 链接的时候a链接两次,即: -la -lb -la...
  • Linux GCC简明教程(编写c语言程序)

    千次阅读 多人点赞 2020-05-07 19:35:34
    市面上常见的 Linux 都是发行版本,典型的 Linux 发行版包含了 Linux 内核、桌面环境(例如 GNOME、KDE、Unity 等)和各种常用的必备工具(例如 Shell、GCC、VIM、Firefox 等),国内使用较多的是 CentOS、Ubuntu...
  • gt;... New CDT project wizard标签:查看GCC列表不存在,但在最下边有个选项:Show project types and toolchains only if they are supported on the platform,去掉勾选,则出现这些列表!注:显...
  • 问题arch linux gcc-multilib等32位兼容lib target not found (各种lib32-xxx等等)问题原因没有添加pacman的multilib支持问题解决sudo vim /etc/pacman.conf #找到[multilib],把这一行和它下一行的注释去掉 sudo ...
  • Armlinux GCC 交叉编译工具

    千次阅读 2009-05-30 14:32:00
    Armlinux GCC 交叉编译工具可以通过以下方式获取:1. 通过现有GNU tools 编译GNU tools源码来获取交叉编译工具。这种方法需要对GNU tools各个源码之间的版本匹配。2.使用Dan Kegel开发的cross-tool脚本来编译源码。 ...
  • Linux gcc 多文件编译

    千次阅读 2017-11-18 11:24:54
    通常整个程序是由多个源文件组成的,相应地也就形成了多个编译单元,使用GCC能够很好地管理这些编译单元。假设有一个由test1.c和 test2.c两个源文件组成的程序,为了对它们进行编译,并最终生 成可执行程序test,...
  • Linux GCC常用命令

    千次阅读 2014-12-03 14:27:45
    GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言;它现在还支持 Ada 语言、C++ 语言、Java 语言、Objective C 语言、Pascal 语言、COBOL语言,以及支持函数式编程和逻辑...
  • 问题:Eclipse环境安装C/C++插件CDT用来编写:C、C++、Objective-C、Fortran、Java、Ada和Go语言的程序! 描述:安装MinGW[C/C++编译平台],GDB[C/C++调试平台]成功了,但是创建... MinGW GCC/Cross GCC/Cygwin GCC/lin
  • linux gcc常用编译选项总结

    万次阅读 2018-03-28 15:57:31
    对于编译源码,Makefile中会用到大量的gcc选项,所以熟悉gcc编译选项对于学习Makefile至关重要。 -c:只激活预处理,编译,和汇编,也就生成obj文件-S:只激活预处理和编译,就是指把文档编译成为汇编代码。-E:只激活...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 81,421
精华内容 32,568
关键字:

linuxgcc

linux 订阅