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
xml/:513: instantiated from here
/home/qt/qt-x11-2.3.2/include/qvaluestack.h:57: 错误: 不能从
‘QValueListIterator
char*’,为实参‘1’(属于‘int remove(const char*)’)
/home/qt/qt-x11-2.3.2/include/qvaluestack.h: In member function ‘T
QValueStack
xml/:2502:
[with
T
instantiated
= QString]’:
from here
/home/qt/qt-x11-2.3.2/include/qvaluestack.h:57: 错误: 不能从
‘QValueListIterator
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


发布评论