当前位置: 技术问答>linux和unix
make时出现/usr/bin/ld: skipping incompatible 。。。
来源: 互联网 发布时间:2017-05-26
本文导语: 我在编译一个图形界面程序时出现: [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 -l...
我在编译一个图形界面程序时出现:
[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不兼容,所以不能正常工作,但究竟怎么解决呢?这问题困扰多时了,也试过很多方法,但都没用,希望会解决的大侠们帮忙解决下!!!
[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不兼容,所以不能正常工作,但究竟怎么解决呢?这问题困扰多时了,也试过很多方法,但都没用,希望会解决的大侠们帮忙解决下!!!
|
1、你编译的目标平台是什么?-->从pxa270可以看到楼主应该是ARM平台吧?
2、你使用的编译器、链接器的平台是什么?-->从g++、/usr/bin/ld可以看到楼主使用的是PC上的编译器、链接器。
因此,楼主要明白什么叫交叉编译才知解决这个问题。
一句话,你要编译ARM平台的程序,必须使用对应的交叉编译器(名称像arm-linux-gcc之类)才行。
2、你使用的编译器、链接器的平台是什么?-->从g++、/usr/bin/ld可以看到楼主使用的是PC上的编译器、链接器。
因此,楼主要明白什么叫交叉编译才知解决这个问题。
一句话,你要编译ARM平台的程序,必须使用对应的交叉编译器(名称像arm-linux-gcc之类)才行。
|
LZ做嵌入式的qt应用,要先交叉编译一个针对你的目标平台的qt编译环境,这个时间会比较长,大概2、3个小时。编译安装好这个库之后,会在安装目录下的/bin/中有“qmake”。
然后再你写好qt的程序后,比如用creator,在工程目录下,make clean; qmake ./*.pro 生成Makefiel文件,然后make就好。
你现在先检查是否经过交叉编译,生成了对应是用平台的qt环境。
然后再你写好qt的程序后,比如用creator,在工程目录下,make clean; qmake ./*.pro 生成Makefiel文件,然后make就好。
你现在先检查是否经过交叉编译,生成了对应是用平台的qt环境。