之前看到很多初学Qt的Linux友们在使用qmake编译第一个HelloQt或者HelloWorld程序时报错,并且始终找不到原因。

前几天我也遇到了同样的问题,我用的是<精通Qt4编程>书上的例子,将代码用Vim输入之后qmake,再make结果报错N行

大部分是说什么什么为定义之类的,查了半天发现是只要把开头的几行#include<QtGui/..>里的文件包含进去就会出错,

但是不包含也不行,(后来发现网上不少人也在问这个问题,可是没说解决的),花了几个小时时间无果而终。

后来下载了QtCreatorQDevelop,重写程序,编译运行都正确,也就没深究下去了。

今天上网无意中看见一帖子,忽然想起自己原先写的程序(还好没删),一看恍然大悟。

以下是原帖地址:
http://www.linuxsir.org/bbs/thread54238.html

原帖的内容我也转载一下:
--------------------------------------------------------------------------------
SuSE下编译QT程序 
帖子1:
最近迷上了游泳和QT,活活。但是在SuSE下面建立了QT程序,并且用QT文档中的步骤自动建立的Makefile却死活不能编译。于是我第一反应就是升级QT到3.2,但是升级之后却还是不能编译,冥思苦想不得其解,于是就耐心下来看make之后的错误信息,并且跟踪到QT的代码里面看,发现报错的地方都是有C++关键词的地方,而且执行make之后的第一句是gcc -c ****,然后想起以前也遇到过,好象gcc只能编译C程序,要编译C++必须用g++,于是打开Makefile,把cc=gcc改成cc=g++,保存退出,结果QT程序就可以编译了 真是TNND
帖子2:
真是太惭愧了,这个问题的原因原来是因为我的源文件的后缀名不是cpp,然后Makefile就认为是C程序了,其实根本不需要修改Makefile就可以编译成功的。咳,自己还是太浮躁了,这么简单的问题没想到,平时用C用习惯了,转到C++连以前的基础都忘记了。
另外,在编译QT程序之前需要定义QTDIR这个环境变量,但是我用的是bash,在.profile里面加入了环境变量定义之后,却在登陆KDE之后丢失了QTDIR这个环境变量,需要我再定义一次,真奇怪啊。在SuSE上QTDIR=/usr/lib/qt3,如果按照QT文档安装的话,可能是QTDIR=/usr/local/.qt
--------------------------------------------------------------------------------

因为是使用Vim写的代码,保存的时候习惯性的存了.c的文件,结果系统默认使用gcc而不是g++,当然编译不了啦%>_<%。。

无语无语啦,把c文件都改成cpp再make一次,顺利生成可执行文件,而且感觉上这样编译的速度要比使用QtCreator或者QDevelop的速度要快不少,(QtCreator和QDevelop比的话,后者的编译速度要快一些,但是编辑功能更弱,个人感觉)。

总之总之,算是把问题的原因找出来了,也是一件开心的事哈。

http://blog.csdn.net/lynfam/article/details/4727163

VIM+qmake编译示例程序HelloQt出错问题的解决(文件名一定要使用.cpp,否则就会默认使用gcc编译,当然通不过)的更多相关文章

  1. 如何编译ReactNative示例程序Examples

    通过示例程序可以看到一些基本组件的使用,对于学习ReactNative是很有帮助的. 编译示例程序需要将整个项目导入到androidStudio中,androidStudio导入项目时选择react- ...

  2. .NET跨平台:在CentOS上编译dnx并运行ASP.NET 5示例程序

    在之前的博文中我们在 Ubuntu 上成功编译出了 dnx ,并且用它成功运行了 ASP.NET 5 示例程序.在这篇博文中我们将 Ubuntu 换成 CentOS. 目前 dnx 的编译需要用到 m ...

  3. Linux下g++编译thread出错的的解决方法

    错误如下图所示: 因为thread是C++11新加入的特性,所以我们在用g++编译的时候不能直接用,需要在g++后面加上 -std=c++0x -pthread 如果是gcc编译多线程的话则应该要用 ...

  4. linux 下gcc 编译结构体问题

    最近在linux 学习c语言的编程,发现好多原来在vs 上的在linux 都编译不过去,今天就遇到了一个问题就是结构体的编译的问题, 结构体大概的定义是 struct Node{ int a; int ...

  5. .NET跨平台:在Ubuntu上用自己编译的dnx运行ASP.NET 5示例程序

    在 Linux Ubuntu 上成功编译 dnx 之后,会在 artifacts/build/ 文件夹中生成 dnx-coreclr-linux-x64/ 与 dnx-mono/ 这2个文件夹,前者是 ...

  6. 单独编译IMX6Q的VPU示例程序:mxc_vpu_test.out

    mxc_vpu_test.out是飞思卡尔为IMX6Q编写的VPU示例程序,有编解码和简单的网络传输功能. 首先从/opt/freescale/pkgs/中提取出imx-test-3.0.35-4.1 ...

  7. FFmpeg示例程序合集-批量编译脚本

    此前做了一系列有关FFmpeg的示例程序,组成了<最简单的FFmpeg示例程序合集>,其中包含了如下项目:simplest ffmpeg player:                   ...

  8. 【Qt】命令行编译Qt程序(nmake)【转】

    简述 前两节讲解了如何在Visual Studio和Qt Creator中搭建Qt开发环境,并分享了我们第一个小程序-Hello World. 下面分享如何使用命令行来编译Qt程序.当然,MSVC和M ...

  9. Socket编程指南及示例程序(转)

    1         前言 在一些常用的编程技术中,Socket网络编程可以说是最简单的一种.而且Socket编程需要的基础知识很少,适合初学者学习网络编程.目前支持网络传输的技术.语言和工具繁多,但是 ...

随机推荐

  1. 编译安装apache2.4

    一.编译安装apache2.4Apache官方说:与Apache 2.2.x相比,Apache 2.4.x提供了很多性能方面的提升,包括支持更大流量.更好地支持云计算.利用更少的内存处理更多的并发等. ...

  2. linux下mysql忘记root密码怎么办

    Linux下MySQL忘记root密码怎么办? Linux下MySQL忘记root密码怎么办? 1. 修改MySQL配置文件 默认MySQL的配置文件为/etc/my.cnf,在[mysqld]下面添 ...

  3. 一个很奇特的异常 tmpFile.renameTo(classFile) failed

    刚换新电脑 win8+迈克菲 ,当tomcat把默认端口更改后(或者是启动了迈克菲的实时扫描),部署工程后,主页打不开了. 杀毒软件都会造成这个问题 百度杀毒全家桶 360全家桶 关掉就好了 .怀疑是 ...

  4. IPTV小窗口播放视频 页面焦点无法移动的解决方法

    在IPTV高清页面中,小窗口播放视频时,在某些机顶盒上(如高清中兴.高清大亚4904)会出现焦点无法移动现象,即按键无响应.被这个bug困扰了很久,虽然我知道解决方法,但只知其然,不知其所以然.今天做 ...

  5. tornado 使用过程中提示‘no module name ioloop’

    千万不要将程序文件命名为tornado.py 不然永远不会运行,因为运行后会在tornado.py里查找ioloop信息,永远找不到...

  6. 给新建的Cocos2d-x 3.X的Win32工程添加CocoStudio库

    1.我们在VS中找到"解决方案资源管理器", 在解决方案"HelloCocos"上点击右键, 选择添加现有项目. 在弹出的对话框中选择************* ...

  7. 2012年的MBP准备升级

    2012年买的MBP MD313要升级啦! 原因是4G内存在升级10.9巨浪后,无论是登录还是打开程序都比较慢,看内存使用使用基本上是满了,因此有了升级内存的想法. 首先想到的是看最大容量,16G,所 ...

  8. QFN和QFP的区别

    QFN(quad flat non-leaded package)四侧无引脚扁平封装.多称为LCC. 陶瓷QFN :基本上都是LCC 标记. 塑料QFN 也称为塑料LCC.PCLC.P-LCC 等. ...

  9. 8.2.5: Spring3.0新增的@DependsOn和@Lazy

    @DependsOn用于强制初始化其他Bean.可以修饰Bean类或方法,使用该Annotation时可以指定一个字符串数组作为参数,每个数组元素对应于一个强制初始化的Bean. @DependsOn ...

  10. 解决svn: Cannot negotiate authentication mechanism错误问题

    解决svn: Cannot negotiate authentication mechanism错误问题 作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/ ...