1)使用make命令编译Qt原码时出现了 /usr/bin/ld: cannot find -lXrender 问题:

/usr/bin/ld: cannot find -lXrender

collect2: ld 返回 1

make[1]: *** [../../../../lib/libQtWebKit.so.4.7.4] 错误 1

make[1]:正在离开目录 `/home/Qt/qt-everywhere-opensource-src-4.7.4/src/3rdparty/webkit/WebCore'

make: *** [sub-webkit-make_default-ordered] 错误 2

其解决方法如下:

执行sudo apt-get install libXrender-dev命令,安装相应的lib文件。

所以最好在编译Qt原码前先执行以下命令:

sudo apt-get install libglib2.0-dev libSM-dev libxrender-dev libfontconfig1-dev libxext-dev

sudo apt-get install libglui-dev

安装相应的lib文件,防止编译出错。

再上网搜索一下,发现在Linux下编译应用程序常常会出现如下错误:

/usr/bin/ld:cannot find -lxxx

意思是编译过程找不到对应库文件。其中-lxxx表示链接库文件libxxx.so。

一般出现这种错误有以下几种原因:

1.系统缺乏对应的库文件

2.库文件版本不对应

3.库文件链接错误

4.库文件路径设置不正确

对于前2种情况,可以通过下载安装lib来解决:

sudo apt-get install libxxx-dev(上面编译Qt的情况大多是这样)

而对于第3种情况,通过find或者locate命令定位到链接文件,查看链接文件是否正确的指向了lib文件。如果不是,用 ln -sf */libxxx.so.x */libxxx.so 命令修改。

对于最后一种情况,可以到/etc/ld.so.conf.d目录下,修改其中任意一份conf文件(也可自建conf),将lib所在的目录写进去,然后在终端输入ldconfig更新缓存。

2) 以下博客来自

去年春天我用Qt3写了一个小软件,感觉Linux下用Qt作界面程序很方便,和Windows下的VC差不多. 所以上次ubuntu 7.10系统一安装好就将Qt3开发包安装上去。这儿顺便把以前安装Qt3软件包貼出来。

#sudo apt-get install qt3-dev-tools qt3-examples Python-qt3 qt3-designer qt3-assistant

现在Qt 的版本已经到Qt-4.3.2了,最近打算用Qt4写个小程序。网上找到安装如下软件包:

#sudo apt-get install qt4-dev-tools qt3-examples qt4-designer qt3-assistant python-qt4

这 里面qt3-examples qt3-assistant,因为相应的qt4版本apt-get找不到,所以就安装了以前的版本. 下面写一个Qt4 的hello world, 来源于 C++ GUI Programming with Qt 4的第一个程序,如下:

#include

#include

int main(int argc, char *argv[])

{

QApplication app(argc, argv);

QLabel *label = new QLabel("Hello Qt!");

label->show();

return app.exec();

}

可以发现这个简单的hello world和Qt3就有一些变化了。

下面编译程序:

#qmake -project

生成配置文件xxx.pro(其中xxx为工程文件名)

#qmake

自动生成Makefile文件

#make

出现了下面的错误信息:

me.cpp:1:28: 错误: qt4/QApplication:No such file or directory

me.cpp:2:22: 错误: qt4/QLabel:No such file or directory

me.cpp: In function ‘int main(int, char**)’:

me.cpp:5: 错误: ‘QApplication’ 在此作用域中尚未声明

me.cpp:5: 错误: expected `;' before ‘app’

me.cpp:6: 错误: ‘QLabel’ 在此作用域中尚未声明

me.cpp:6: 错误: ‘label’ 在此作用域中尚未声明

me.cpp:6: 错误: expected type-specifier before ‘QLabel’

me.cpp:6: 错误: expected `;' before ‘QLabel’

me.cpp:8: 错误: ‘app’ 在此作用域中尚未声明

me.cpp: At global scope:

me.cpp:3: 警告: 未使用的参数 ‘argc’

me.cpp:3: 警告: 未使用的参数 ‘argv’

make: *** [me.o] 错误 1

打开Makefile文件, 发现里面包含的Qt文件全部是和 Qt3有关的,使用qmake -v 命令发现果然qmake的版本是3,whereis找到qmake命令所在目录/usr/bin/qmake

#ls -l qmake*

lrwxrwxrwx 1 root root 23 2008-01-18 20:53 /usr/bin/qmake -> /etc/alternatives/qmake

-rwxr-xr-x 1 root root 2052100 2007-10-31 01:29 /usr/bin/qmake-qt3

-rwxr-xr-x 1 root root 3378140 2007-11-06 07:56 /usr/bin/qmake-qt4

# ls -l /etc/alternatives/qmake

lrwxrwxrwx 1 root root 18 2008-01-18 20:56 /etc/alternatives/qmake -> /usr/bin/qmake-qt3

现在清楚了 qmake是个链接,通过alternatives/qmake指向qmake-qt3,现在想让qmake默认为qmake-qt4,只要重定向链接

#sudo rm /etc/alternatives/qmake

#sudo ln -s /usr/bin/qmake-qt4 /etc/alternatives/qmake

同样,想要designer命令默认是版本4,只要

#sudo rm /etc/alternatives/designer

#sudo ln -s /usr/bin/designer-qt4 /etc/alternatives/designer

现在好了,再次qmake -project , qmake, make 上面的hello world文件,一切顺利。

在交叉编译过程中,在./configure中加上类似-qt-mouse-*和-qt-kbd-*就会出现unknown argument错误。

./configure

-prefix /usr/local/qte-arm    (强制安装在此路径)

-debug-and-release             编译和链接两个版本的Qt

-qt3support                    支持QT3

-qt-zlib                       捆绑使用的Qt的zlib。

-qt-libtiff                    使用Qt的捆绑的libtiff。

-qt-libpng                     使用Qt的捆绑的的libpng。

-qt-libmng                     使用Qt的捆绑的libmng。

-qt-libjpeg                    使用Qt的捆绑的的libjpeg。

-make libs                     新增 libs

-nomake examples               排除 。。

-nomake demos                  排除。。

-nomake docs                   排除。。

-no-cups                       不要编译CUPS的支

-iconv                         编译iconv拥有支持(3)

-xplatform qws/linux-arm-g++

-embedded arm

-little-endian

-qt-freetype

-depths 8,16,24,32

-qt-gfx-linuxfb

-no-gfx-transformed

-no-gfx-qvfb

-no-gfx-vnc

-no-gfx-multiscreen

-no-dbus

-qt-sql-sqlite

-qt-kbd-qvfb

-qt-kbd-tty

-qt-mouse-pc

-no-glib

-plugin-mouse-tslib -I/usr/local/tslib/ -L/usr/local/tslib/lib -D__ARM_ARCH_5TEJ__

(包含路径)                                 (库路径)                     (定义的预处理器)

以mipsel为架构的loongson1B开发板在交叉编译QT4.5以上版本时的配置为:

./configure -prefix /opt/qt4-mipsel -release -shared -fast -pch -no-qt3support -qt-sql-sqlite -no-libtiff -no-libmng -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -no-openssl -no-webkit -nomake examples -nomake demos -nomake tools -optimized-qmake -no-phonon -no-nis -no-opengl -no-cups -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-xkb -no-sm -no-xinerama -no-xshape -no-separate-debug-info -xplatform qws/linux-mips-g++ -embedded mips -little-endian -depths 16 -no-qvfb -qt-gfx-linuxfb -no-gfx-qvfb -no-kbd-qvfb -no-mouse-qvfb -confirm-license -qt-mouse-tslib -I/opt/tslib-mipsel/include -L/opt/tslib-mipsel/lib

如果出错:

/usr/local/arm/4.1.2/bin/../lib/gcc/arm-angstrom-linux-gnueabi/4.1.2/../../../../arm-angstrom-linux-gnueabi/bin/ld: warning: libts-0.0.so.0, needed by /home/stillwater/4.1.2/qt-everywhere-opensource-src-4.6.0/lib/libQtGui.so, not found (try using -rpath or -rpath-link)

/home/stillwater/4.1.2/qt-everywhere-opensource-src-4.6.0/lib/libQtGui.so: undefined reference to `ts_read_raw'

/home/stillwater/4.1.2/qt-everywhere-opensource-src-4.6.0/lib/libQtGui.so: undefined reference to `ts_open'

/home/stillwater/4.1.2/qt-everywhere-opensource-src-4.6.0/lib/libQtGui.so: undefined reference to `ts_fd'

/home/stillwater/4.1.2/qt-everywhere-opensource-src-4.6.0/lib/libQtGui.so: undefined reference to `ts_config'

/home/stillwater/4.1.2/qt-everywhere-opensource-src-4.6.0/lib/libQtGui.so: undefined reference to `ts_close'

/home/stillwater/4.1.2/qt-everywhere-opensource-src-4.6.0/lib/libQtGui.so: undefined reference to `ts_read'

collect2: ld returned 1 exit status

make[2]: *** [deform] Error 1

make[2]: Leaving directory `/home/stillwater/4.1.2/qt-everywhere-opensource-src-4.6.0/demos/deform'

make[1]: *** [sub-deform-make_default] Error 2

make[1]: Leaving directory `/home/stillwater/4.1.2/qt-everywhere-opensource-src-4.6.0/demos'

make: *** [sub-demos-make_default-ordered] Error 2

解决办法:

修改qt-4.6.1/mkspecs/qws/linux-mips-g++/qmake.conf 文件(添加lts参数):

QMAKE_CC                = mips-linux-gcc -lts

QMAKE_CXX               = mips-linux-g++ -lts

QMAKE_LINK              = mips-linux-g++ -lts

QMAKE_LINK_SHLIB        = mips-linux-g++ -lts

#sudo make install

4)

mipsel-linux-g++ -Wl,-rpath-link,/opt/qt-everywhere-opensource-src-4.8.6/lib -fno-exceptions -Wl,-O1 -Wl,-rpath,/opt/qt-everywhere-opensource-src-4.8.6/src/3rdparty/webkit/Source/lib -Wl,-rpath,/opt/qt4-mipsel/lib -Wl,-rpath,/opt/qt4-mipsel/lib -o tst_qwebframe .obj/release-shared-emb-mips/tst_qwebframe.o .obj/release-shared-emb-mips/qrc_tst_qwebframe.o    -L/TSLIB/lib -L/opt/qt-everywhere-opensource-src-4.8.6/lib -L/TSLIB/lib -L/opt/qt-everywhere-opensource-src-4.8.6/lib -lQtDeclarative -lQtScript -lQtSvg -lQtSql -lQtWebKit -lQtTest -lQtGui -lQtNetwork -lQtCore -lpthread

/opt/gcc-4.3-ls232-softfloat/lib/gcc/mipsel-linux/4.3.0/../../../../mipsel-linux/bin/ld: warning: libts-0.0.so.0, needed by /opt/qt-everywhere-opensource-src-4.8.6/lib/libQtGui.so, not found (try using -rpath or -rpath-link)

/opt/qt-everywhere-opensource-src-4.8.6/lib/libQtGui.so: undefined reference to `ts_read_raw'

/opt/qt-everywhere-opensource-src-4.8.6/lib/libQtGui.so: undefined reference to `ts_open'

/opt/qt-everywhere-opensource-src-4.8.6/lib/libQtGui.so: undefined reference to `ts_fd'

/opt/qt-everywhere-opensource-src-4.8.6/lib/libQtGui.so: undefined reference to `ts_config'

/opt/qt-everywhere-opensource-src-4.8.6/lib/libQtGui.so: undefined reference to `ts_close'

/opt/qt-everywhere-opensource-src-4.8.6/lib/libQtGui.so: undefined reference to `ts_read'

collect2: ld returned 1 exit status

Makefile.WebKit:109: recipe for target 'tst_qwebframe' failed

make[3]: *** [tst_qwebframe] Error 1

make[3]: Leaving directory '/opt/qt-everywhere-opensource-src-4.8.6/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebframe'

Makefile.WebKit:51: recipe for target 'sub-qwebframe-make_default' failed

make[2]: *** [sub-qwebframe-make_default] Error 2

make[2]: Leaving directory '/opt/qt-everywhere-opensource-src-4.8.6/src/3rdparty/webkit/Source/WebKit/qt/tests'

Makefile.WebKit:187: recipe for target 'sub-WebKit-qt-tests-make_default-ordered' failed

make[1]: *** [sub-WebKit-qt-tests-make_default-ordered] Error 2

make[1]: Leaving directory '/opt/qt-everywhere-opensource-src-4.8.6/src/3rdparty/webkit/Source'

Makefile:562: recipe for target 'sub-webkit-make_default-ordered' failed

make: *** [sub-webkit-make_default-ordered] Error 2

eb http://ppa.launchpad.net///deb.opera.com/opera-stable/ stable non-free/ubuntu maverick main

解决办法:

修改qt-everywhere-opensource-src-4.6.0/mkspecs/qws/linux-mips-g++/qmake.conf 文件(添加lts参数):

QMAKE_CC = mipsel-linux-gcc -lts

QMAKE_CXX = mipsel-linux-g++ -lts

QMAKE_LINK = mipsel-linux-g++ -lts

QMAKE_LINK_SHLIB = mipsel-linux-g++ -lts

osg,qt编译的一些问题

osg编译例子的时候,打开文件就出问题,可能是一些不兼容的问题 qt编译的是时候要添加qt和vs2010的整合工具,这样才能把 vs2010里面的QTDIR变量和环境变量QTDIR关联起来 同是右击文 ...

Solaris 10下Qt编译Oracle 10g驱动

上回书讲到,现在开始用Qt来编译下Oracle 10g驱动吧!这样就可以通过Qt程序联入Oracle数据库了! Oracle的环境变 ...

Qt编译安装后中文无法显示问题

闲的蛋疼,把Ubuntu删了,再装10.04的时候,QT编译后运行自己的程序已经不能显示中文了,只能显示英文,字体贼丑... 想了各种办法,都没解决.. 最后:终于搞定: apt-get instal ...

让QT编译快一点(增加基础头文件)

姚冬,中老年程序员 进藤光.杨个毛.欧阳修 等人赞同 我是来反对楼上某些答案的.我曾经用MFC写了金山词霸(大约20多万行),又用Qt写了YY语音(大约100多万行),算是对两种框架都比较有经验.纠正 ...

Qt编译慢吗?

1. “用Qt写的程序编译比MFC慢”的说法是错误的绝对错误,单位代码行数编译Qt远比MFC快得多,因为Qt库的头文件设计非常好,尽量都使用了前置声明,避免了头文件嵌套,几乎所有类都使用了公有类和私有 ...

Qt编译oci教程

Qt编译OCI教程 上图oci.dll 不是oci.lib 我很奇怪网上大部分教程都是写的oci.lib,其实大家可以去oracle目录找一下这个文件,看看是不是在这个目录,我找了一下没发现.而lib ...

关于QT编译错误问题

这里的意思是出现QT编译错误: 1.之前编译没问题,突然就报错了,而且错误根本不知道啥玩意. 2.编译出现不能自动更新,比如更改ui但是编译之后没该改变. ... 解决方法: 1.删除Makefile ...

qt 编译的文件没有生效

/******************************************************************* * qt 编译的文件没有生效 * qt交叉编译时,生成的可执行 ...

QT编译发布程序后报错如缺少dll、“应用程序无法正常启动(0xc000007b)”的可能解决方法

QT编译发布程序后报错如缺少dll.“应用程序无法正常启动(0xc000007b)”的可能解决方法 最近项目要用qt,因为初学没有经验,遇到些小问题常常没什么头绪,也查不到解决方法,刚刚还因为低端错误 ...

随机推荐

JSP页面元素构成

1.page指令

用JMeter进行Performance Test

用JMeter可以对Http请求进行Performance Test,来分析哪些方法花费的时间多,哪些方法花费的时间少,有了这样的分析结果后,我们就可以集中力量来改进费时的方法. 官方文档请参考如下链 ...

dataURI V.S. CSS Sprites 移动端

英文原文:http://www.mobify.com/blog/css-sprites-vs-data-uris-which-is-faster-on-mobile/ 中文翻译:http://www. ...

mysql 基本使用教程(源于网络)

http://dev.mysql.com/doc/refman/5.1/zh/index.html 3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择 ...

FLEX实现两侧边栏固定中间自适应布局

中文Win7下成功安装calabash-android步骤

Calabash-android是支持android的UI自动化测试框架,网上看见很多同学说,安装calabash比较费劲,特别是Windows下安装,也没有一个详细的安装手册可供参考.正好,今天在W ...

Hadoop 停止Job

1.查看所有正在运行的Job Hadoop job -list 2.根据Id停止某一个Job Hadoop job –kill

微信小程序表单验证

参考:http://www.cnblogs.com/zhangxiaoyong/p/10166951.html

python简单爬虫 用lxml库解析数据

目标:爬取湖南大学2018年本科招生章程 url:http://admi.hnu.edu.cn/info/1026/2993.htm 页面部分图片: 使用工具: Python3.7 火狐浏览器 PyC ...

HTTP基础与Android之(安卓与服务器通信)——使用HttpClient和HttpURLConnection

查看原文:http://blog.csdn.net/sinat_29912455/article/details/51122286 1客户端连接服务器实现内部的原理 GET方式和POST方式的差别 H ...

'qapplicationapp'在此作用域中尚未声明 linux,qt 编译问题总结相关推荐

  1. Linux下stricmp在此作用域中尚未声明解决办法

    在使用大小写不敏感函数比较字符串时,很顺手的来了个stricmp,g++编译的时候:错误:'stricmp'在此作用域中尚未声明. 后来查了一下,stricmp是windows特有的.而linux是s ...

  2. linux 安装包 在此作用域中尚未声明_Linux运行go项目报错:copy_file_range: bad file descriptor...

    这两天在 Linux 环境部署一个 Go 项目遇到一个报错:copy_file_range: bad file descriptor.网上查找各种方法,花了两天的时间,经过一番折腾后才解决,觉得非常有 ...

  3. 关于strlwr,strupr等函数在此作用域中尚未声明的问题

    简单题中遇到的问题!~~ 1423: String Task Time Limit: 1 Sec Memory Limit: 128 MB [Submit][Status][Web Board] De ...

  4. 错误:‘CV_RETR_EXTERNAL’在此作用域中尚未声明

    错误类型直接看下面图片: 我的程序错误原因是CV_RETR_EXTERNAL找到了2个位置,如下面的enum_...0dde_8和22e2_8,程序不能确定位置,所以报"未声明错误" ...

  5. ffmpeg编译gb28181_国标GB28181协议视频推流平台EasyGBD在Linux下编译报“UINT64_C在此作用领域中尚未声明”错误...

    上一篇我们讲了国标GB28181协议视频推流平台EasyGBD正在重新编译,在编译中难免遇到不同的报错,比如"UINT64_C在此作用领域中尚未声明"错误就是其中一个. 出现该问题 ...

  6. linux中内核4c,Linux内核编译

    年纪大了,记性不好,这篇文档作为自学笔记,也算是积累,给自己一个交待. Linux内核编译的大致流程如下: 一.获取内核代码:编译内核代码之前一定要获取到内核代码,到http://www.kernel ...

  7. linux qt编译命令,Linux 下编译并安装配置 Qt 全过程

    Linux 下编译并安装配置 Qt 全过程 1.获得源代码 src 官网下载地址:ftp://ftp.qt.nokia.com/qt/source/ 2009 年 10 月 1 日发布的 qt-x11 ...

  8. ubuntu qt编译mysql报错_[Linux]QT编译Mysql驱动(Mariadb驱动),解决qmake报错问题

    编译环境 系统:Ubuntu18.04 QT版本:Qt 5.14.0 gcc版本:gcc version 7.5.0 qt官方编译驱动方式 在使用QT连接数据库时遇见的第一个错误就是QMYSQL dr ...

  9. linux qt编译命令,linux下使用命令模式去编译Qt程序

    1.打开终端输入,qmake -v ,如果提示版本信息正,就可以编译程序了. 2.当前目录切换到程序源代码目录,cd /home/likewei/untitled2 3.生成untitled2.pro ...

最新文章

  1. arm-linux-gcc/ld/objcopy/objdump参数总结【转】
  2. 【硬件】集线器,交换机,路由器
  3. 圣诞节海报设计还没开始?感受下合适的节日感PSD模板
  4. mysql的唯一索引UNIQUE
  5. 不知道怎么办了,犹豫中……
  6. keystore签名文件与platform.pk8、platform.x509.pem之间的相互转换
  7. 维基百科六度分隔理论
  8. DTOJ 2746. 皇后游戏(game)
  9. 【SCOI 2005】王室联邦 树上分块?
  10. 一行代码帮你彻底解决pip下载速度慢的问题,更改pip源至国内镜像(无须新建文件夹), 享受飞一般的速度
  11. 在虚拟机下安装配置Linux和Oracle
  12. 成功解决:fatal: detected dubious ownership in repository at ‘E:/workspace/CSMarket‘。如何使用git工具通过命令行的形式
  13. Error in unoecdf(cc, pdiff[case], Wi[case] * PTB.Vi[case]) : NA/NaN/Inf in foreign function call
  14. 27U、42U、47U常见机柜设备布局图详解【转载自微信公众号弱电课堂】
  15. 人生忠告:给男人和女人(ZT)
  16. 【网络】IP、域名、端口号和DNS域名解析之间的联系简介(给服务器添加域名来验证)
  17. js 变量、函数重复声明和变量提升浅析
  18. xstream异常com.thoughtworks.xstream.security.ForbiddenClassException
  19. 【微信小程序】网络数据请求
  20. 计算机网络——运输层

热门文章

  1. 【后空翻机器人代码】斯坦福后空翻机器人设计、代码全开源,成本降至3000美元,人人皆可DIY|湾区人工智能...
  2. Mac中Python版本随意切换终极指南,简单到爆,什么都不用设置
  3. python循环输入字符串_Python基础-条件判断、循环、字符串格式化
  4. 两杯咖啡只卖2.5?瑞幸价格出错被“薅羊毛” 官方道歉了...
  5. iPhone 13 系列不再齐「芯」,苹果为什么要造三款不同的 A15 处理器?
  6. 江苏省消保委约谈14家企业,要求确保弹窗一键关闭无障碍实现
  7. 苹果:我们一直在App Store上展示竞争对手的应用程序
  8. ofo败局中唯一赚到钱的只有他?当事人回应......
  9. Redmi Note10系列发布时间曝光:最高搭载1亿像素主摄
  10. 苹果推送iOS 14.3,支持 ProRAW!