之前看到很多初学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. 设计模式之观察者模式(Java)

    设计模式(Design pattern)是什么?它是一套由四人组(The Gang of Four, [1]的作者)总结出来的软件设计框架.其目的是为了提高代码的可重用性,增强系统的可维护性和代码的易 ...

  2. html 中head显示 在标题栏里面的图片

    在<head>标签里加<link rel="Shortcut Icon" href="你的ico图片地址" /> 一般标题栏里的图片是1 ...

  3. jquery读取本地文件

    <html> <head> <script type="text/javascript" src="/jquery/jquery.js&qu ...

  4. Python下的机器学习工具sklearn--数据预处理

    1.数据标准化(Standardization or Mean Removal and Variance Scaling) 进行标准化缩放的数据均值为0,具有单位方差. from sklearn im ...

  5. SQL Server 改变数据库的名字

    方法 1: alter database modiry name = new_database_name; ---------------------------------------------- ...

  6. ListView的Item点击事件(消息传递)

    转载请保留原文出处“http://my.oschina.net/gluoyer/blog”,谢谢! 您可以到博客的“友情链接”中,“程序猿媛(最新下载)*.*”下载最新版本,持续更新!当前版本,也可直 ...

  7. 移动网络山寨版(OpenBTS)【2】频段的故事

    OpenBTS 系统有两个看点.一个是无线收发,尤其是频段的处理,另一个是网络系统,尤其是替代传统的基站(BTS),基站控制器(BSC),移动控制中心(MSC),以及(HLR/VLR)的另类方案. 先 ...

  8. Delphi使用Windows API函数AnimateWindow实现窗体特效

    {**********************************************************************API函数 AnimateWindow 使用:函数功能:窗 ...

  9. Java Servlet的配置文件web.xml配置内容和具体含义

    文件名:“SimpleServlet.java” package cn.mldn.lxh.servlet ;//定义包 import java.io.* ; // HttpServlet属于javax ...

  10. Examining the Rooms(dp,斯特灵数)

    Examining the Rooms Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...