2024年3月24日发(作者:)

qt编译错误汇总

0.预备知识:编译-运行一个c/c++程序时,编译器只默认的去连接c

库,而很多的库不是标准库

1.linux下#inlude 命令默认头文件搜索路径为/usr/include,qt编程要

用到的库qapplication库在usr/lib/qt-3.1/include下所以必须要用I增

加路径。如 g++ -hello –I/usr/lib/qt-3.1/include 。-I表示除了

收索标准库,还要收索指定的额外头文件路径。

2.linux下的库,动态库为.so文件静态库为.a文件,编译运行时系统

默认搜索的库为/usr/lib和/lib库。

linux下C库在/lib/.6路径下。

3.编译qt程序时要加上 g++ -lqt …. lib库(相当于函数库集);

-I:表示头文件额外搜索路径

-L:表示要额外lib库搜索路径。

-l:表示表示指定具体的要连接(用到)的库(–lqt表示连接qt库)

(qt不在默认lib库路径下,而在/usr/lib/qt-3.1/lib下,所以必须额外

指定)

4.为了简化编译时的指定路径和库的麻烦,可以设置环境变量:

CPLUS_INCLUDE_PATH:设置头文件搜索路径。

例如:export CPLUS_INCLUDE_PATH=/usr/lib/qt-3.1/include //

LD_LIBRARY_PATH:设置动态库搜索路径。

例如:export LD_LIBRARY_PATH =/usr/lib/qt-3.1/lib //注意qt比较

特殊直接用LIBRARY_PAHT;

在终端下输入 env 和set命令可以显示环境变量。

5.qt下编译可用简便方法

运行qmake –project 产生一个pro工程文件。

运行 qmake 产生Makefile

运行 make 产生可执行程序

6.查找一个文件用命令:which qmake

7. qwidget.h是可视化窗口类。

8.编译常见错误:undefined reference to….没找到实现函数,相当于

有头文件但没有具体实现里面的函数。

9、qt4的安装用configure –no-openssl ……yes

10、当用到槽的时候由于c++中没有槽的概念,就要用moc进行处理

生成c++文件

qmake进行编译qt程序时的执行过程(以原程序为例):

g++ -c –o myslot.o

moc myslot.h –o moc_

g++ -c –o moc_myslot.o moc_

g++ -o 3-2 myslot.o moc_myslot.o –lqt

OS:

GCC:gcc

ubuntu

8.04 kernel

2.6.24-21-generic

4.2.4

qt:/home/qt/qt-x11-2.3.2

qte:/home/qte/qte-2.3.2-new

******************1st Error******************************

在包含自 kernel/:97 的文件中:

kernel/qt_x11.h:65:22: 错误: X11/Xlib.h:没有该文件或目录

kernel/qt_x11.h:71:23: 错误: X11/Xutil.h:没有该文件或目录

kernel/qt_x11.h:72:21: 错误: X11/Xos.h:没有该文件或目录

kernel/qt_x11.h:73:23: 错误: X11/Xatom.h:没有该文件或目录

kernel/qt_x11.h:84:34: 错误: X11/extensions/shape.h:没有该文

件或

In

目录

constructor

QFont&,

kernel/:

‘QPSPrinterFont::QPSPrinterFont(const

QPSPrinterPrivate*)’:

kernel/:5195: 错误: ‘XGetFontPath’在此作用域中尚

未声明

kernel/:5235: 错误: ‘XFreeFontPath’在此作用域中

make[3]: ***

[kernel/qpsprinter.o]

错误

1

make[3]:正在离开目录

make[2]:

make[2]:

make[1]:

make[1]:

make:

***

***

***

[src-mt]

开目录

`/home/qt/qt-x11-2.3.2/src'

误 2

`/home/qt/qt-x11-2.3.2'

误 2 [src-mt]

[init]

目录

`/home/qt/qt-x11-2.3.2'

误 2

-----------------------------------------------------------------

Reason: Need lib just as xlib .etc

---------------------------------------------------------------

Resolution: Install qt4-dev qt4-design

********************************************************

*******************2nd

xml/:1518: 警告:

Error****************************

未使用的参数‘ret’

/home/qt/qt-x11-2.3.2/include/qvaluestack.h: In member function ‘T

QValueStack::pop() [with T = QMap]’:

xml/:513: instantiated from here

/home/qt/qt-x11-2.3.2/include/qvaluestack.h:57: 错误: 不能从

‘QValueListIterator >’转换到‘const

char*’,为实参‘1’(属于‘int remove(const char*)’)

/home/qt/qt-x11-2.3.2/include/qvaluestack.h: In member function ‘T

QValueStack::pop()

xml/:2502:

[with

T

instantiated

= QString]’:

from here

/home/qt/qt-x11-2.3.2/include/qvaluestack.h:57: 错误: 不能从

‘QValueListIterator’转换到‘const char*’,为实参‘1’(属于‘int

remove(const

make[3]: *** [xml/qxml.o] 错误

char*)’)

1

make[3]:正在离开目录

make[2]:

make[2]:

make[1]:

make[1]:

make:

***

***

***

[src-mt]

开目录

`/home/qt/qt-x11-2.3.2/src'

误 2

`/home/qt/qt-x11-2.3.2'

误 2 [src-mt]

[init]

目录

`/home/qt/qt-x11-2.3.2'

误 2

-----------------------------------------------------

Reason: 代码uestack.h:57this未被赋值

-----------------------------------------------------

Resolution:

vim $QTDIR/include/qvaluestack.h &

将remove( this->fromLast() );改为this->remove( this->fromLast() );

**********************************************************

***************************3rd Error***********************

在包含自 /usr/include/X11/Xft/Xft.h:41 的文件中,

从 kernel/qt_x11.h:76,

从 kernel/:97:

/usr/include/ft2build.h:56:38: 错误: freetype/config/ftheader.h:没

有该文件或目录

在包含自 kernel/qt_x11.h:76

的文件中,

:97: 从kernel/

/usr/include/X11/Xft/Xft.h:42:10: 错误: #include 需要

"FILENAME"

In file

included

from

kernel/qt_x11.h:76,

kernel/:97: from

/usr/include/X11/Xft/Xft.h:62: 错误: ‘FT_Library’没有命名一个类型

/usr/include/X11/Xft/Xft.h:96: 错误: ‘FT_UInt’没有命名一个类型

/usr/include/X11/Xft/Xft.h:103: 错误: ‘FT_UInt’没有命名一个类型

/usr/include/X11/Xft/Xft.h:200: 错误: expected ‘,’ or ‘...’ before ‘*’

token

/usr/include/X11/Xft/Xft.h:305: 错误: expected ‘,’ or ‘...’ before ‘*’

token

/usr/include/X11/Xft/Xft.h:363: 错误: ‘FT_Face’没有命名一个类型

/usr/include/X11/Xft/Xft.h:403: 错误: expected ‘,’ or ‘...’ before ‘*’

token

/usr/include/X11/Xft/Xft.h:409: 错误: expected ‘,’ or ‘...’ before ‘*’

token

/usr/include/X11/Xft/Xft.h:418: 错误: ‘FT_UInt’未声明

/usr/include/X11/Xft/Xft.h:419: 错误: ‘FT_UInt’未声明

/usr/include/X11/Xft/Xft.h:427: 错误: ‘FT_UInt’没有命名一个类型

/usr/include/X11/Xft/Xft.h:461: 错误: expected ‘,’ or ‘...’ before ‘*’

token

kernel/: In constructor

QFont&, ‘QPSPrinterFont::QPSPrinterFont(const

QPSPrinterPrivate*)’:

kernel/:5187: 警告: 提领类型双关的指针将破坏强重

make[2]: ***

[kernel/qpsprinter.o] 错误

1

make[2]:正在离开目录

make[1]:

make[1]:

make:

***

***

[sub-src]

[init]

目录

`/home/qt/qt-x11-2.3.2/src'

误 2

`/home/qt/qt-x11-2.3.2'

误 2

----------------------------------------------------------

Reason: PATH were not defined

-----------------------------------------------------------

Resolution:

export

export

export

export

QTDIR="/home/qt/qt-2.3.2"

QTEDIR="/home/qte/qte-2.3.2-new"

PATH="$QTEDIR/bin:$QTDIR/bin:$PATH"

PATH="$QTEDIR/tmake/bin:$PATH"

export

export

TMAKEPATH="$QTEDIR/tmake/lib/qws/linux-x86-g++"

LD_LIBRARY_PATH="$QTEDIR/lib:$QTDIR/lib:$LD_LIBRARY_PA

TH"

export

cd

QTDIR=$QTDIR

$QTDIR

**************************************************************************

编译通过!!!!

没有遇到的问题,但可能遇到的问题:

cd

gedit

class

class

error:

kernel/:125:57: 错误:asm/page.h:没有那个文

In file

included from

目录

前面增加以

,‘QWSInputMethod’

$QTDIR/src/kernel

has

not been

declared

//$DTDIR=/home/opiehome/qt-2.3.10

qwindowsystem_qws.h

下两行

QWSInputMethod;

QWSGestureMethod;

kernel/qgfx_qws.h:39,

from kernel/:112:

kernel/qimage.h: In member function ‘int

QImageTextKeyLang::operator<(const

const’:

QImageTextKeyLang&)

kernel/qimage.h:58: 警告:建议在 || 的操作数中出现的 && 前后加

kernel/:

In

constructor

‘QSharedMemoryManager::QSharedMemoryManager()’:

kernel/:539: 错误:‘PAGE_SIZE’在此作用域中尚

未声明

kernel/:539: 错误:‘PAGE_MASK’在此作用域中

尚未

In

member function

‘void kernel/:

QSharedMemoryManager::internal_free(QSMemPtr)’:

kernel/:773: 错误:‘PAGE_SIZE’在此作用域中尚

未声明

kernel/:773: 错误:‘PAGE_MASK’在此作用域中

make[2]:

make[2]:

make[1]:

make[1]:

make:

***

未声

错误

1 [kernel/qpixmapcache.o]

directory

[sub-src]

directory

[init] 错

Leaving

***

Leaving

***

`/root/2410clQt/qt-2.3.10/src'

错误 2

`/root/2410clQt/qt-2.3.10'

误 2

solving

[root@localhost kernel]#

:

cp

/home/john/embedded-system/setup-dir/linux-2.4.21/include/asm-i

386/page.h

/usr/include/asm/

使用nfs时在cp一些大点的文件时,出现NFS的错误:

nfs:

server

*** not

responding,

still trying

nfs mount时候出现的NFS崩溃,按照以下的方式mount

mount -t nfs -o intr,nolock,rsize=1024,wsize=1024

192.168.1.3/root/somedir /host