之前看到很多初学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. OpenGL鼠标旋转图像

    (鼠标旋转功能) #include <iostream> using namespace std; #include<gl/glut.h> GLfloat transx,tra ...

  2. UIALertView与UIAlertViewDelegate的基本用法

    首先,视图控制器必须得实现协议UIAlertViewDelegate中的方法,并指定delegate为self,才能使弹出的Alert窗口响应点击事件. 具体代码如下: ViewController. ...

  3. mac + apache + php

    1: 设置下用sublimetext为默认打开方式, 确保下载sublimetext 2:设置下默认打开方式为sm sudo ln -s /Applications/Sublime\ Text\ 2. ...

  4. AutoItLibrary库入门

    一.AutoItLibrary入门 1. 为什么要使用AutoItLibrary Selenium2library在我们实际测试web页面的时候基本上已经够用了,不过还是会有部分情况下会脱离Selen ...

  5. Android07-Android广播

    ¨广播机制简介 ¨动态和静态注册广播 ¨接收系统广播 ¨自定义广播 ¨本地广播   n广播是一种系统级的事件(Event). n当系统发生某些事件时(例如,收到短信.来电.电量低),就会向整个Andr ...

  6. Eclipse 快捷键操作和常用设置

    自动提示功能:一般的关键字,都有提示内容 像syso 就是System.out.println();for 循环 等 它的快捷键是 (Alt+/) 格式化代码: 有时候代码写多了 比较乱的话可以用快捷 ...

  7. 攻击DotCom小游戏

    许久都没写博客了,些许是前段时间有些懈怠,今天来写博客,想记录下做过的事情,怕以后电脑换了,以前做的小项目也跟着丢了,总结下最近做的一个小游戏: 游戏目的:建立一个7X7的网格,选择其中的连续的三格来 ...

  8. 【Python】iiacm_filemaker ——简易的.cpp文件创建即初始化脚本,ACMer专用

    代码已全部重写,上次写的真是不忍直视…… 今天刚刚接触Python,本着学以致用的原则,就写了一个按照要求自动生成.cpp文件并初始化头文件的脚本. 确定你的linux中安装了Python,将下面的代 ...

  9. MySQL必知必会 学习笔记(一)

    第一章  了解SQL 模式:   关于数据库和表的布局以及特性的信息.[描述表可以存储什么样的数据,数据如何分解,各部分信息如何命名等等,可以用来描述数据库中特定的表以及整个数据库(和其中表的关系)] ...

  10. 《think in python》学习-3

    函数 函数是指用于进行某种计算的一系列语句的有名称的组合. type(32) 就是一个函数调用的例子 类型转换函数 python提供了一些可将某个值从一种类型转换为另外一个类型的内置函数 int(32 ...