① 能解释下编译失败的原因吗
编译失败的原因有很多种。其中主要有以下一些类型:
(1)、用户编写的源程序中有语法错误。例如:未定义某一个变量就进行引用。这一类错误是最简单的,也是编译器最容易检查出来的,所以会产生对源程序的编译失败;
(2)、用户编写的源程序中有未对变量进行初始化就进行引用,也会导致程序运行错误。例如:用户虽然定义了一个指向某一个内存地址的指针变量,但是在使用前却未对它进行初始化,并进行任何判断,就往该指针指向的内存地址赋予了一个数值,这种情况在语法上编译器是检查不出来的,但是程序一旦运行起来,肯定就会出现错误了。在 WINDOWS 系统下一般是:指向XXXX的内存不能够为 Read (或者为 Write),要是在 UNIX/linux 系统下就会发生 Core Dumped。
(3)、数组越界。这类错误也是编译器检查不出来的,但是一旦程序运行起来,程序的运行结果可能就是一个随机的结果。而不是用户需要得到的结果。
所以从编译的实质上说,以上情况都应该属于编译失败的类型。因为编译器并无法阻止这些错误的发生,而是让程序在运行时发生了各种各样的意想不到的运行结果。
② 为什么在Linux中strlwr()不能编译通过,已经查看过<string.h>,的确在头文件中没有
strlwr和strupr都不是标准的C库函数!有些编译器不支持很正常,编译器不支持的,只能自己定义这两个函数并且用代码自己去实现它。
个人使用过VC++2010,是可以编译通过的,证明VC++2010里边的编译器支持这两个函数。
而linux中的GCC编译器则编译不通过,证明linux下的GCC编译器不支持这两个函数。
③ 同样的代码,windows下vs2010可以正常运行,linux下为何会不能编译要怎么修改
equence 似乎是抄写错误!!!
main.cpp:90:25: 错误: 在嵌套模板实参列表中应当使用‘> >’而非‘>>’
先把这个错误改掉,就好定位错误了!!
extern vector<vector<Sequence> > FS;//Frequent Sequences
vector<vector<Sequence> > FS(W);
改成:
extern vector<vector<Sequence> > FS;//Frequent Sequences
vector<vector<Sequence> > FS(W);
④ 有谁比我悲催,在linux下编译个gcc编译了两个月都没成功
没弄成是你不诚心弄,跟着我说的方法做
1.下载镜像例如:redhat-rhel-server-6.8-x86_64-dvd.iso
2.在虚拟机上安装环境
3.因为红帽的系统什么都没装,所以要自己安装编译工具gcc
gcc需要的包都在下面放呢,不要用下面的版本,每个系统不一样
4.下图中gcc所有rpm安装包的由来
【在寻找gcc安装包的过程时我是先搜所需依赖,后来直接下载怎么装都装不上
,主要原因就是版本和安装顺序不对,安装顺序从教程和报错中寻找,】
我安装的镜像是redhat-rhel-server-6.8-x86_64-dvd.iso用WinRAR打开镜像
redhat-rhel-server-6.8-x86_64-dvd.isoPackages这个目录下面看看,
看到了什么,这个是所有和系统适配的rpm安装包,找gcc-****包名字,
解压出来,然后安装,安装或报错,看着报错缺失的是哪个依赖包,然后去镜像
压缩包里面寻找,版本保证一致。
5.为了不出现其他错误,尽量重装一边,保证系统干净。懂不?
gcc需要的包名 版本 redhat-rhel-server-6.8-x86_64-dvd.iso
给两个网上的教程
http://blog.csdn.net/gdfsbingfeng/article/details/53287278
http://blog.csdn.net/wangqing_12345/article/details/52484723