![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
gcc
RYZR
这个作者很懒,什么都没留下…
展开
-
min宏定义探究
<br />min宏定义探究 在GCC的文档中建议使用如下的min宏定义:<br />引用:#define min(X,Y) /<br />(__extension__ /<br />({ /<br /> typeof(X) __x=(X), __y=(Y); /<br /> (__x<__y)?__x:__y; /<br />}) /<br />) <br /><br />本文讨论了这样作法的意义。<br /> 1、传统的min带来的副作用<br /> 2、GCC转载 2010-12-29 17:05:00 · 625 阅读 · 0 评论 -
GCC编译的背后( 预处理和编译 汇编和链接)
<br /><br />by falcon<zhangjinw@gmail.com><br />2008-02-22<br />平时在Linux下写代码,直接用"gcc -o out in.c"就把代码编译好了,但是这后面到底做了什么事情呢?如果学习过编译原理则不难理解,一般高级语言程序编译的过程莫过于:预处理、编译、汇编、链接。gcc在后台实际上也经历了这几个过程,我们可以通过-v参数查看它的编译细节,如果想看某个具体的编译过程,则可以分别使用-E,-S,-c和 -O,对应的后台工具则分别为cpp,cc1转载 2011-05-31 16:25:00 · 1069 阅读 · 0 评论 -
交叉编译 MSB 和LSB 问题
<br /> MIPS平台gcc交叉编译MSB和LSB问题<br /> <br /> 最近在做mips平台的工作,在交叉编译软件包的时候发现的问题现在记录下来,当我们用linux命令file一个文件的时候会出现如:<br />libiconv.so.2.5.0: ELF 32-bit LSB shared object, MIPS, MIPS32 rel2 versio原创 2011-03-29 12:29:00 · 10800 阅读 · 3 评论 -
嵌入式开发板与PC串口传输文件
嵌入式开发板与PC串口传输文件目标板与主机pc传输文件问题,可以使用linux的工具lrzsz 工具,交叉编译后把 lrz lsz 传输到目标版的bin目录下,然后在想要接受文件的目录下运行lrz :比如 cd /tmp 在tmp目录下运行lrz 则接受到的文件就放在tmp下。我的串口传输用kermit 所以需要在运行先设置一下kermit的配置 在/home/richard/.kermit 文件中写道:set line /dev/ttyUSB0set speed 1原创 2011-03-29 13:58:00 · 1923 阅读 · 1 评论 -
Linux下gcc编译中关于头文件与库文件搜索路径相关问题(三)
<br />关键字: linux操作系统的头文件和库文件搜索路径<br />Include 的 header 文件 , 动态链接库,系统定义,总共有下列来源指定 gcc 去那里找。<br />当初在编译时指定的 ( 在 ~gcc/gcc/collect2.c:locatelib()<br />写在 specs 内的 ,内定的,这是当初 compile gcc 时写在程序内的。<br />后来用 -D -I -L 指定的<br />gcc 环境变量设定 ( 编译的时候 )<br />ld.so 的环境变量 (转载 2011-03-20 20:04:00 · 596 阅读 · 0 评论 -
Linux下gcc编译中关于头文件与库文件搜索路径相关问题(二)
<br />关键字: linux指定动态库路径<br />Linux 指定动态库路径<br /> <br />众所周知, Linux 动态库的默认搜索路径是 /lib 和 /usr/lib 。动态库被创建后,一般都复制到这两个目录中。当程序执行时需要某动态库, 并且该动态库还未加载到内存中,则系统会自动到这两个默认搜索路径中去查找相应的动态库文件,然后加载该文件到内存中,这样程序就可以使用该动态库中的函 数,以及该动态库的其它资源了。在 Linux 中,动态库的搜索路径除了默认的搜索路径外,还可以通过以下三转载 2011-03-20 20:01:00 · 685 阅读 · 0 评论 -
Linux下gcc编译中关于头文件与库文件搜索路径相关问题(一)
<br />关键字: 如何指定gcc的默认头文件路径<br />在交叉编译的时候我们需要用到其他的库,在 config 时候可以通过 “-I” 来指定头文件目录,但是每次都需要设置的话难免有些麻烦,找到一个简单的方法。看下文的红色部分。 <br /><br />有大量的环境变量可供设置以影响 GCC 编译程序的方式。利用这些变量的控制也可使用合适的命令行选项。一些环境变量设置在目录名列表中。这些名字和 PATH 环境变量使用的格式相同。特殊字符 PATH_SEPARATOR (安装编译程序的时候定义)用在目转载 2011-03-20 20:00:00 · 1711 阅读 · 1 评论 -
控制符号的可见性
<br /> 在普通的C语言中,如果您希望将函数或者变量限制在当前文件中,需要对其使用static关键字。然而,在一个包含很多文件的共享库中,如果您希望某个符号可以被共享库内部的几个文件访问,而又不提供给外部,则对符号进行隐藏处理就会比较困难。大多数的连接器都提供一些便利的方法来隐藏或者显示模块中所有的符号,但如果希望更加具有选择性,则需要更多的处理。 在Mac OS X v10.4之前,有两种机制可以控制符号的可见性。<br /> 第一种技术是通过__private_extern__关键字,转载 2011-03-18 10:41:00 · 1405 阅读 · 0 评论 -
gcc头文件指定及动态链接的使用
<br /> gcc头文件指定及动态链接的使用<br />本文详细介绍了linux 下gcc头文件指定方法,以及搜索路径顺序的问题。另外,还总结了,gcc动态链接的方法以及路径指定,同样也讨论了搜索路径的顺序问题。本文包含了很多的例子,具有很强的操作性,希望读者自己去走一遍。一.#include <>与#include “”<br />#include <>直接到系统指定的某些目录中去找某些头文件。<br />#include “”先到源文件所在文件夹去找,然后再到系统指定的某些目转载 2011-03-16 16:35:00 · 1235 阅读 · 0 评论 -
查看编译器自定义宏
1. cpp -dM /dev/null 命令可以查看本机gcc编译器自定义的宏2.c2-linux-cpp -dM /dev/null 我用c2的交叉编译器,所以执行这个命令就可产看c2的gcc编译的自定义宏3. gcc -dM -E - < /dev/null主要是为了用CPU架构来区分不同平台 例如 代码中有#if defined(__ppc64__)原创 2011-06-23 17:13:00 · 1144 阅读 · 0 评论