gcc编译错误】的更多相关文章

gcc编译时对’xxxx’未定义的引用问题可能错误 错误一: 没有实现xxxx 错误二: c++引用c语言so库,但是so库头文件没有extern "C" 错误三: 检查各个共享库的依赖顺序,:越是底层的库,越是往后面写…
在用gcc 编译连接的时候,可能会遇到类似以下的错误: /usr/bin/ld: test_desktop_utils-test-desktop-utils.o: undefined reference to symbol 'g_desktop_app_info_get_filename'//usr/lib/x86_64-linux-gnu/libgio-2.0.so.0: error adding symbols: DSO missing from command line 这个问题一般是由于…
转自:http://www.linuxidc.com/Linux/2012-01/52153.htm Linux系统下的c编程与Windows有所不同,如果你在用gcc编译代码的时候提示‘for’ loop initial declarations are only allowed in C99 mode,可能就是因为你在loop循环比如for中使用未预先定义的变量,比如: for(int i=0;i<10;i++) { } 这种写法在vc里是没有错的,而子gcc就会提示错误,要求遵守c89标准…
conversion from %s to %s not supported by iconv”iconv 不支持从 %s 到 %s 的转换” iconv_open”iconv_open” no iconv implementation, cannot convert from %s to %s”没有 iconv 的实现,无法从 %s 转换到 %s” character 0x%lx is not in the basic source character set\n”字符 0x%lx 不在基本源…
问题如下图所示:(.text+0x53a): relocation truncated to fit: R_X86_64_32S against `.bss' 以前在Linux中编译程序,从来没有遇到过这种问题,今天第一次遇到.查了一些资料发现时内存的限制,自己还有些疑问,以前编译内存大小是4G的程序都没出现过这种错误. 看到一些博文中说是内存超过2G会出现问题.需要添加编译选项:-mcmodel 调整编译时的对静态数组要求的大小:-mcmodel=medium(中级)  -mcmodel=la…
使用boost的时候遇到一个链接错误 undefined reference to `boost::system::detail::generic_category_instance 出现这个问题的有几种情况 1.没有指定动态库或者静态库 这种是最常见的 直接添加编译参数即可-lboost_system 2.项目中要添加编译参数-std=c++11 这里的c++11应该是和编译boost的GCC版本支持的一致 刚好我项目中两种情况都不是,实际上已经指定了静态库的,原来是编译boost的GCC支持…
mac gcc  Undefined symbols for architecture x86_64 "std::__1: // Undefined symbols for architecture x86_64: "std::__1::locale::use_facet(std::__1::locale::id&) const", referenced from: std::__1::basic_ostream<char, std::__1::char_tra…
除非明确说明,本文内容仅针对x86/x86_64的Linux开发环境,有朋友说baidu不到,开个贴记录一下(加粗字体是关键词): 用“-Wl,-Bstatic”指定链接静态库,使用“-Wl,-Bdynamic”指定链接共享库,使用示例:-Wl,-Bstatic -lmysqlclient_r -lssl -lcrypto -Wl,-Bdynamic -lrt -Wl,-Bdynamic -pthread -Wl,-Bstatic -lgtest("-Wl"表示是传递给链接器ld的参数…
正好是我们代码中遇到的问题,之前不求甚解,只用g++编译没有错误就不管了,现在要跨平台到windows下就遇到了问题.全文转载自:http://user.qzone.qq.com/75172588/blog/1248167335 gcc和g++的区别1.gcc在编译阶段,把后缀为.c的源文件按照c语法和方式进行编译:把后缀为.cpp的源文件,按照c++语法和方式进行编译.在链接阶段,不自动和C++程序使用的库链接.所以,.cpp如果有c++的代码,可能会产生链接错误:.c不存在这个问题,因为如果…
1 error: expected expression before 'else' else之前无表达式. 2 error: lvalue required as left operand of assignment 左值问题. 3 error: invalid storage class for function 'XXXXXX' 在文件的某个地方,丢失了一个大括号‘}’. 常见gcc编译警告整理(开始) .warning: no newline at end of file 在文件最后一行…
​第一次在Liunx上(liunx mint 17)使用gcc编译c文件,竟然提示“找不到stdio.h",经过google后发现执行 sudo apt-get install build-essential 即可,详见:http://slipper-99933.blog.163.com/blog/static/39954044201021651833785/ 正文: ​刚学习了柔性数组,照教程写了用柔性数组生成斐波那契数列,经过一翻修改后gcc编译通过,运行时却提示“段错误”.google一下…
今天在虚拟机上用GCC编译一个程序的时候,出现了下面的错误: make: warning: Clock skew detected. Your build may be incomplete 试了make clean后再make,仍然是同样的问题,最后发现这个错误的原因在于系统时间比文件修改时间早,看了下我的系统时间竟然还是2012-01-13,而今天都已经是2012-01-31呢,于是修改时间后重新编译,问题解决. Linux下用date命令可查询和修改系统时间(root权限才可修改) dat…
昨天,遇到一个比較bug的错误,用gcc来编译几个简单的文件出错,编译环境为x86_64的Ubuntu12.04.gcc版本号号例如以下: gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 编译例如以下命令,主要是须要加入一个经常使用数学库libm.so.编译的语法例如以下出现了例如以下的错误: gcc -lm main.c bp_alg_api.c -o test 还是会出现没有链接时指定的库文件lm. 假设这样就能够成功: gcc main.c bp_alg_…
在gcc编译中如果使用 for(int i=0;i<n;++i){}会提示错误 错误:只允许在 C99 模式下使用'for'循环初始化声明 用gcc编译出现 就是说你的你的c编译器不是c99标准 这是编译器自身的问题了 你可以换编译器 for(int i=0;i<100;i++) 与 int i; for(i=0;i<100;i++) 就 i 作用域这一丁点小差别 换一种写法而已 这不是重点 重点是思维 数据结构 学程序没必要在c99这种小节上花功夫当然也有解决方法,如下    错误处理…
一.概述 在Linux系统下使用gcc编译用C语言写的mesa的示例程序. 环境:Ubuntu Server 18.04.1 二.问题的出现 在Ubuntu下安装好mesa所需的库文件,将目标文件从github上克隆下来之后编译. 以上截取的是用gcc编译目标文件和传参的介绍: gcc:源程序将用gcc编译器进行编译: osdemo,c:将要被编译的源程序: -lOSMesa:链接OSMesa库: -lGLU:链接GLU库: -lGL:链接GL库: -o:指定目标名称: osdemo:编译后生成…
预处理错误: No such file or directory 出错原因:①包含错误:eg  #include <abc.h> //abc.h为用户自行编写文件 解决方法:⑴应改为#include “abc.h” //用尖括号是表示从C库中寻找,一般为C自带类,如stdio.h.string.h等.应用用户自建的文件应使用“”(引号). ⑵编译时添加 -I(大写i) filename(文件目录)  //将filename作为第一个寻找头文件的目录. //参考:https://www.cnbl…
GCC 编译优化指南(转) http://www.jinbuguo.com/linux/optimize_guide.html 作者:金步国 版权声明 本文作者是一位开源理念的坚定支持者,所以本文虽然不是软件,但是遵照开源的精神发布. 无担保:本文作者不保证作品内容准确无误,亦不承担任何由于使用此文档所导致的损失. 自由使用:任何人都可以自由的阅读/链接/打印此文档,无需任何附加条件. 名誉权:任何人都可以自由的转载/引用/再创作此文档,但必须保留作者署名并注明出处. 其他作品 本文作者十分愿意…
gcc编译时对’xxxx’未定义的引用问题 gcc编译时对’xxxx’未定义的引用问题 原因 解决办法 gcc 依赖顺序问题 在使用gcc编译的时候有时候会碰到这样的问题,编译为.o(obj) 文件没有问题,但是编译(这一步应该是链接)为可执行文件的时候会出现找不到’xxx’的定义的情况. 本文由乌合之众 lym瞎编,欢迎转载blog.cnblogs.net/oloroso 本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso 例如: g++ -o spider -…
GNU CC(简称为Gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C.C++和Object C等语言编写的程序.Gcc不仅功能强大,而且可以编译如C.C++.Object C.Java.Fortran.Pascal.Modula-3和Ada等多种语言,而且Gcc又是一个交叉平台编译器,它能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件,因此尤其适合在嵌入式领域的开发编译.本章中的示例,除非特别注明,否则均采用Gcc版本为4.0.0. GCC入门基础 表3.6 Gcc所…
一.error: 'for' loop initial declarations are only allowed in C99 mode 前段时间写了一个小C程序,放在linux下用gcc编译出错,弹出以下错误: 百度后才知道,是gcc的模式问题. 我在for循环里习惯直接定义并初始化变量来使用: for(int i=0:i<length: i++) 而在gcc编译时是错误的,应该在循环外定义变量: int i; for(i = 0; i<length; i++) 这样才编译通过. 这是因为…
转自: http://www.jinbuguo.com/linux/optimize_guide.html GCC 编译优化指南 作者:金步国[www.jinbuguo.com] 版权声明 本文作者是一位开源理念的坚定支持者,所以本文虽然不是软件,但是遵照开源的精神发布. 无担保:本文作者不保证作品内容准确无误,亦不承担任何由于使用此文档所导致的损失. 自由使用:任何人都可以自由的阅读/链接/打印此文档,无需任何附加条件. 名誉权:任何人都可以自由的转载/引用/再创作此文档,但必须保留作者署名并…
编译简单的 C 程序 C 语言经典的入门例子是 Hello World,下面是一示例代码: #include <stdio.h>  int main(void)  {     printf("Hello, world!\n");      return 0;  } 我们假定该代码存为文件‘hello.c’.要用 gcc 编译该文件,使用下面的命令: $ gcc -g -Wall hello.c -o hello 该命令将文件‘hello.c’中的代码编译为机器码并存储在可执…
GCC编译优化指南[作者:金步国] GCC编译优化指南 作者:金步国 版权声明 本文作者是一位自由软件爱好者,所以本文虽然不是软件,但是本着 GPL 的精神发布.任何人都可以自由使用.转载.复制和再分发,但必须保留作者署名,亦不得对声明中的任何条款作任何形式的修改,也不得附加任何其它条件.您可以自由链接.下载.传播此文档,但前提是必须保证全文完整转载,包括完整的版权信息和作译者声明. 其他作品 本文作者十分愿意与他人共享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣,可以在如下位置查看现有…
在Linux使用GCC编译C语言共享库 对任何程序员来说库都是必不可少的.所谓的库是指已经编译好的供你使用的代码.它们常常提供一些通用功能,例如链表和二叉树可以用来保存任何数据,或者是一个特定的功能例如一个数据库服务器的接口,就像MySQL. 大部分大型的软件项目都会包含若干组件,其中一些你发现可以用在其他项目中,又或者你仅仅出于组织目的将不同组件分离出来.当你有一套可复用的并且逻辑清晰的函数时,将其构建为一个库会十分有用,这样你就不将这些源代码拷贝到你的源代码中,而且每次都要再次编译它们.除此…
gcc编译C程序的主要过程是:预处理---编译---汇编---连接,其中:(以名为hello.c的源文件为例) 预处理:对各种预处理指令(#开头,如#include,#define)进行处理,以及删除注释和多余空白字符.生成被修改的源程序hello.i E是通知gcc对hello.c进行预编译:o是对命令输出结果进行导入操作 gcc -E hello.c -o hello.i 编译:对代码进行语法语义分析和错误判断,生成汇编代码文件hello.s S是通知gcc对目标文件hello.i进行编译…
编译简单的 C 程序 C 语言经典的入门例子是 Hello World,下面是一示例代码: ;} 我们假定该代码存为文件‘hello.c’.要用 gcc 编译该文件,使用下面的命令: $ gcc -g -Wall hello.c -o hello 该命令将文件‘hello.c’中的代码编译为机器码并存储在可执行文件 ‘hello’中.机器码的文件名是通过 -o 选项指定的.该选项通常作为命令行中的最后一个参数.如果被省略,输出文件默认为 ‘a.out’. 注意到如果当前目录中与可执行文件重名的文…
转自:http://www.jinbuguo.com/linux/optimize_guide.html 版权声明 本文作者是一位开源理念的坚定支持者,所以本文虽然不是软件,但是遵照开源的精神发布. 无担保:本文作者不保证作品内容准确无误,亦不承担任何由于使用此文档所导致的损失. 自由使用:任何人都可以自由的阅读/链接/打印此文档,无需任何附加条件. 名誉权:任何人都可以自由的转载/引用/再创作此文档,但必须保留作者署名并注明出处. 其他作品 本文作者十分愿意与他人分享劳动成果,如果你对我的其他…
错误情况1:makefile:5: *** 遗漏分隔符 . 停止 原因:具体的编译动作,开头不可以有空格,留白是由 按tab键形成的. 解决方法:去掉空格,改为tab键后,再执行make命令,成功. 错误情况2:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0' 错误原因:是因为你用gcc编译.cpp文件.按系统默认.cpp文件是c++的文件格式解决方法: 方法1. gcc -o t t.cpp -lstdc++ //-…
(一)GCC编译过程 预处理 cpp -o a.i a.c     //生成预处理文件 等同于[gcc -E] //预处理为将宏定义(#define)等进行替换. 编译 /user/lib/gcc/i486-linux-gnu/4.4.3/cc1 -o a.s  a.i //红色为目标文件, 蓝色为编译文件 等同于[gcc -S] 汇编 as -o a.o  a.s  //将a.s汇编保存为a.o文件 等同于[gcc -c] 链接 /usr/lib/gcc/i486-linux-gnu/4.4.…
最近在linux 学习c语言的编程,发现好多原来在vs 上的在linux 都编译不过去,今天就遇到了一个问题就是结构体的编译的问题, 结构体大概的定义是 struct Node{ int a; int b; }; 在利用gcc 编译的时候就显示 错误:‘Node’未声明(在此函数内第一次使用), 这就让我感觉很奇怪,原来这都是可以的 后来查了资料改成这个样子就可以了 typedef struct Node{ int a; int b; }Node; 这样就编译成功了.…