当前位置:  技术问答>linux和unix

为什么编译c库函数总是出现大量的语法错误?错误都是产生在C库函数的头文件。

    来源: 互联网  发布时间:2015-05-16

    本文导语:  到底是这些库函数的头文件有问题还是gcc,g++编译器有问题?? 我的gcc是2.96版的 | gcc2.96版有bug 附录 E -- 开发者的眼泪 总在mplayer-users邮件列表上引起巨大争吵和怒火的主题主要有两个。第...

到底是这些库函数的头文件有问题还是gcc,g++编译器有问题??

我的gcc是2.96版的

|
gcc2.96版有bug

附录 E -- 开发者的眼泪
总在mplayer-users邮件列表上引起巨大争吵和怒火的主题主要有两个。第一个主题是关于

E.1 GCC 2.96
背景:GCC2.95系列是GNU官方发行版而GCC的2.95.3版本是这个系列中bug最少的。我们从来没有遇到过可以归罪于GCC 2.95.3的编译问题。从RedHat Linux 7.0开始,Red Hat在他们的发行版里包括了一个打满补丁的CVS版本的GCC,命名为2.96。Red Hat在他的发行版中包括这个版本是因为当时GCC 3.0还没有完成,而他们需要一个在所有他们支持的平台上,包括IA64和s390都正常工作的编译器。Linux发行版Mandrake也照着Red Hat的例子开始在他们的Linux-Mandrake 8.0系列中搭载GCC 2.96。

声明:GCC小组否认于GCC 2.96有任何联系并对GCC 2.96发表了一份官方回应。世界各地的开发者开始遇到GCC 2.96的问题,并开始推荐其他的编译程序。Apache,MySQL,avifile和Wine。其他你会感兴趣的链接有:Real time Linux,Linux kernel news flash about kernel 2.4.17和Voy Forum。MPlayer同样经受这些时有时无的只要换个不同版本的GCC就可以全部解决的问题。有些项目开始为一些2.96的问题实现绕过的方法,但是我们拒绝修正别人的bug,尤其是其中一些绕过的方法意味着降低性能。

你能在这个站点的读到故事的另一面。GCC 2.96不允许在汇编程序中出现|(管道)字符因为它同时支持 Intel和AT&T的语法而|字符在Intel版本中是个符号。问题是它一声不吭的忽略了整个汇编程序块。这个问题现在应该被修正了,GCC会显示一个警告而不是直接跳过。

现状:Red Hat说2.96-85以上的GCC都已经修正了。情况确实好了很多,但我们在我们的邮件列表里仍然遇到一些换了编译器之后就不存在了的问题。在任何情况下它都不再重要了。希望一个成熟的GCC 3.x将很好的解决这个问题。如果你想要用2.96编译的话在configure的时候加上--disable-gcc-checking 标记。记住你要自己负责而且不要报告任何bug。如果你报告,你只会被我们的邮件列表封掉,因为对于GCC 2.96我们已经有够多的争吵了。请让它平息下来。

如果你的GCC 2.96有问题,你能从Red Hat的ftp服务器得到2.96-85的包,或者直接去找7.2或更高版本里面提供的 3.0.4的包。你也能用gcc-3.2-10的包(非官方的,但是工作地不错)和你能把他们跟你已经有的2.96 装在一起。MPlayer检测到它并用3.2-10代替2.96。如果你不想要或者无法使用二进制包,下面教你怎么从源代码编译最新的GCC:

去GCC镜像页网页并下载gcc-core-XXX.tar.gz。XXX是版本号。里面包括了完整的C编译器程序,对MPlayer是足够了。如果你也想要C++,Java或其它一些GCC的高级特性gcc-XXX.tar.gz可能更适合你。 


|
把错误贴出来一点点看看,
很可能是编译时没有包含某些库,
所以头文件里的函数没有定义......

|
这种错误,我也碰到过,具体情况记不清了,
要看以下你的代码和编译命令

|
把头文件的次序改变一下,看看

或者
g++ -Wall -c *.cpp

|
应该还是你自己头文件的问题。拿出来看看吧。

|
可能是你的头文件有问题。
检查一下你的头文件所包括的格式吧。很可能是哪儿的差一个或者多一个括号什么的。我以前就遇见过。

|
ddd

    
 
 

您可能感兴趣的文章:

  • gcc编译的函数可不可以确定编译后的函数在文件中的顺序
  • static函数被编译成内联函数(inline)
  • 请问在REDHAT下使用gcc编译器用的是什么函数库,函数库的资料应该上哪儿找?
  • 请问:我要链接哪些oci库才能成功编译.我在编译的时候老是报OCI函数找不到.
  • 反编译了一个Java类,但是发现里面由好多同名函数,同时参数一样,返回值不同,然后就编译不回去了!
  • g++能调用gcc编译出来的库中的函数吗?
  • linux下,编译时,log函数总是不认,这是为什么?
  • 如何导出-g编译出的执行程序的函数信息?
  • minGW编译带fork函数的问题?
  • 菜鸟问题, GCC 编译出的目标码中函数前面有没有下划线呀?
  • 不重新编译内核能修改内核函数吗?
  • 请问在linux下,如何编译些API函数
  • 编译socket程序需要加什么库函数?
  • 如何在程序中动态的加载并且调用另一个编译好的函数?
  • 编译缺少函数原型,
  • 共享库如何在编译的时候确定哪些函数没有实现?
  • linux下c++调用数学函数后,编译正确但不出结果
  • 我用的是atmel一个成熟的开发板。有一个触摸屏驱动程序,以<M>的方式编译为模块,编译时提示某个外部函数没有定义,但如果以<*>的方式编译进内核,则不会出错。请教下可能是什么原因?
  • 如何编译含有静态成员函数的C++文件?
  • 编译arm版prelink出错,elf_与gelf_的库函数全部没有定义
  • gnu c++如何得到对于编译错误和运行错误的帮助?
  • linux安装codeblock 编译错误make: *** [all-recursive] 错误 1
  • 使用Runtime.exec("calc.exe")时,编译 出现错误,看不懂这个错误,怎么回事?
  • 我用javac编译HelloWorldapp.java无错误,但运行时出现该错误:Exception in thread "main" java.lang.NoClassDefFoundError: helloworldapp
  • 奇怪,为什么char ch='u10100'编译错误,而char ch='ujava'编译成功呢?
  • 为什么我用GCC编译后,在源文件中定义的宏被修该了?(产生编译错误)
  • 内核编译出现前所未有的错误
  • 编译错误,?
  • ubuntu 10.10出现极其诡异的情况,使用gcc编译没任何反应,可以继续输入,但是不提示任何错误;使用make编译效果一样;
  • aix 编译正确后运行异常错误
  • 错误提示太多了 显示不下 如何在编译的时候分屏显示?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问 pathclass设置正确 语法正确 编译通过 但在执行时 显示"Exception in thread "main" java.lang.NoClassDefFoundError"…………不解
  • 基于JSP编译器基本语法的使用详解
  • linux/centos源码安装nginx编译配置选项参数介绍
  • 请教:JSP编译器编译成字节码,跟别的编译器编译出来的有什么不同呢?
  • CentOS 6内核升级:下载编译启用新内核版本详细过程
  • 编译GCC时能不能只编译C/C++的编译器?
  • 高速的网络抓包库PF_ring介绍及编译安装
  • 关于arm交叉编译器4.3.3编译程序报错,但是3.4.5却能编译通过的问题
  • JB下,我的程序编译得好慢!请问用什么方法编译才可以快一点?或编译顺序改变一下?
  • 请问gdb是不是只能调试gcc编译的程序,在unix下用其它编译器编译的程序是不是不一定能用gdb调试的?
  • 用JCreator写了一个小程序,有十几个class,当修改某个文件重新编译,javac并没有编译修改的文件,请问要如何做javac才会重新编译所有的
  • NOSQL iis7站长之家
  • 嵌入式linux开发:一段代码在windows平台用VC编译运行正常,在linux平台用gcc编译运行正常,但是用arm-linux-gcc编译在嵌入式板子上运行就不正常.
  • 在cygwin编译驱动程序要不要交叉编译?
  • 关于如何把编译进内核的编译成模块
  • C编译器 c++编译器 wieldylcc
  • Linux下gcc编译时,如何以静态链接的形式编译?
  • PROC开发时 //注释编译不通过 如何设置使用cpp编译。
  • 编译失败后如何再继续编译
  • 编译qt-x11,最后编译生成可执行文件时候,make出错
  • 如何查看已编译安装软件的编译命令行
  • 请问哪里有反编译.class文件的反编译器?
  • 用Jdk编译时出现提示要加 -deprecation 再编译,请教??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3