make时出现/usr/bin/ld: skipping incompatible 。。。

kekobin 2012-07-23 12:33:24
我在编译一个图形界面程序时出现:
[root@localhost button]# make
g++ -o button button.o -L/pxa270/qtopia/arm/qt-2.3.10/lib -lqte -lm -lstdc++
/usr/bin/ld: skipping incompatible /pxa270/qtopia/arm/qt-2.3.10/lib/libqte.so when searching for -lqte
/usr/bin/ld: cannot find -lqte
collect2: ld returned 1 exit status
make: *** [button] Error 1

我的lib/libqte.so都是正确的,也是32位的,看了些资料,有说是/usr/lib/ld与交叉编译出的lib不兼容,所以不能正常工作,但究竟怎么解决呢?这问题困扰多时了,也试过很多方法,但都没用,希望会解决的大侠们帮忙解决下!!!
...全文
24126 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyterrific 2014-08-22
  • 打赏
  • 举报
回复
引用 5 楼 kekobin 的回复:
问题解决了,修改了下Makefile里的编译器和连接器。 CC = arm-linux-g++ CXX = arm-linux-g++ CFLAGS = -pipe -Wall -W -O2 -DNO_DEBUG CXXFLAGS= -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -DNO_DEBUG INCPATH = -I$(QTDIR)/include LINK = arm-linux-g++ make: [root@localhost button]# make arm-linux-g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -DNO_DEBUG -I/pxa270/qtopia/arm/qt-2.3.10/include -o button.o button.cpp arm-linux-g++ -o button button.o -L/pxa270/qtopia/arm/qt-2.3.10/lib -lqte -lm -lstdc++ 真是谢谢诸位啦!
请问楼主具体是怎么修改的?我也遇到了相同问题,菜鸟不懂啊~~~~~~~~~谢谢~~~
dongjiawei316 2012-07-24
  • 打赏
  • 举报
回复
楼上的说的都正确啊!你的编译环境肯定和你的程序将来的运行环境不是一个吧!所以必须使用交叉编译器编译,这不是32位或者64位的问题。
kekobin 2012-07-24
  • 打赏
  • 举报
回复
问题解决了,修改了下Makefile里的编译器和连接器。
CC = arm-linux-g++
CXX = arm-linux-g++
CFLAGS = -pipe -Wall -W -O2 -DNO_DEBUG
CXXFLAGS= -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -DNO_DEBUG
INCPATH = -I$(QTDIR)/include
LINK = arm-linux-g++

make:
[root@localhost button]# make
arm-linux-g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -DNO_DEBUG -I/pxa270/qtopia/arm/qt-2.3.10/include -o button.o button.cpp
arm-linux-g++ -o button button.o -L/pxa270/qtopia/arm/qt-2.3.10/lib -lqte -lm -lstdc++

真是谢谢诸位啦!
Linux-Torvalds 2012-07-24
  • 打赏
  • 举报
回复
一个是arm架构的,一个是x86架构的,当然不兼容了。
neipe2003 2012-07-23
  • 打赏
  • 举报
回复
LZ做嵌入式的qt应用,要先交叉编译一个针对你的目标平台的qt编译环境,这个时间会比较长,大概2、3个小时。编译安装好这个库之后,会在安装目录下的/bin/中有“qmake”。
然后再你写好qt的程序后,比如用creator,在工程目录下,make clean; qmake ./*.pro 生成Makefiel文件,然后make就好。
你现在先检查是否经过交叉编译,生成了对应是用平台的qt环境。
李迟 2012-07-23
  • 打赏
  • 举报
回复
1、你编译的目标平台是什么?-->从pxa270可以看到楼主应该是ARM平台吧?

2、你使用的编译器、链接器的平台是什么?-->从g++、/usr/bin/ld可以看到楼主使用的是PC上的编译器、链接器。

因此,楼主要明白什么叫交叉编译才知解决这个问题。

一句话,你要编译ARM平台的程序,必须使用对应的交叉编译器(名称像arm-linux-gcc之类)才行。

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧