求教:QTE移植问题:(can find -lts ,[../../bin/moc] ,error loading libts-0.0.so.0

时间:2022-12-31 16:33:31
平台:redhat 5(自带有QT3.3), linux 2.6.18, gcc 4.1.2, eabi(arm-linu-gcc)4.1.2 , ts1.4,

ts1.4编译通过后安装的目录:/share/tslib  (文件系统根目录下)
    ./configure --prefix=/share/tslib --host=arm-linux  ac_cv_func_malloc_0_nonnull=yes --enable-inputapi=yes
    make
    make install

QTE3.3.8配置:
设置环境变量
export QTDIR=/root/build_qt/qte
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export PATH=/usr/local/arm/4.1.2/bin:$QTDIR/bin:$PATH


./configure -qt-libjpeg  -qt-gif  -qt-libpng -system-libjpeg -qt-libmng -qt-imgfmt-jpeg  -embedded arm -thread  -no-cups  -no-stl  -no-mouse-pc -no-mouse-yope -no-mouse-bus -no-mouse-vr41xx  -qt-mouse-tslib -I/share/tslib/include -L/share/tslib/lib -lts  -qconfig local  -depths 4,8,16,32 -qvfb


问题1来了:
/usr/bin/ld: skipping incompatible /share/tslib/lib/libts.so when searching for -lts
/usr/bin/ld: cannot find -lts
collect2: ld 返回 1
make[2]: *** [../../bin/moc] 错误 1
make[2]: Leaving directory `/root/build_qt/qte/src/moc'
make[1]: *** [src-moc] 错误 2
make[1]: Leaving directory `/root/build_qt/qte'
make: *** [init] 错误 2

发现make时候 原来拷贝过来的usr/lib/qt3.3/lib/moc 会不见了
查资料说:再拷贝make一下就好。。。。。。。。可是我照做了每次还是一样的错误(moc每次都不见了)
N多遍试过后,崩溃,放弃此举,另寻办法

我注意到了上面的
/usr/bin/ld: skipping incompatible /share/tslib/lib/libts.so when searching for -lts
/usr/bin/ld: cannot find -lts
猜想大概QT编译时用g++编译这个东西

发现:终端里这样做
[root@localhost ~]# gcc -lts
/usr/bin/ld: cannot find -lts

[root@localhost ~]# gcc -lts -L/share/tslib/lib
/usr/bin/ld: skipping incompatible /share/tslib/lib/libts.so when searching for -lts
/usr/bin/ld: cannot find -lts

[root@localhost ~]# arm-linux-gcc -lts
/usr/local/arm/4.1.2/bin/../lib/gcc/arm-angstrom-linux-gnueabi/4.1.2/../../../../arm-angstrom-linux-gnueabi/lib/crt1.o: In function `_start':
init.c:(.text+0x30): undefined reference to `main'
collect2: ld returned 1 exit status

求解释@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@求解释:
求解释:1。是不是指定了ts库用--host=arm-linux只有arm-linux-gcc识别吧??为什么指定了QT配置用arm平台,它编译时候不用arm-linux-g++ 而用 g++ 来编译这个东西呢??
2.为什么 arm-linux-gcc 可以自动识别库,而gcc要加路径才能发现它???(我没有 手动添加 /share/tslib/lib到环境变量)
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


接着走,我重新编译了一次ts库。这次配置:
    ./configure ac_cv_func_malloc_0_nonnull=yes --enable-inputapi=yes
    make
    make install

默认安装库生成在/usr/local/lib
这次没有指定是arm-linux

再实验
[root@localhost ~]# gcc -lts
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'


这次可以解决上次那个问题1了,也不会出现moc在make时候消失了
OK了,可以重新编译qte通过了(我的重新编译时重解压过后的。。。。。)
The Qt library is now built in ./lib
The Qt examples are built in the directories in ./examples
The Qt tutorials are built in the directories in ./tutorial

Enjoy!   - the Trolltech team


求解释@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@求解释:
求解释:这次我配置的是X86平台的ts1.4,不是arm平台的,这样子编译通过的QTE会不会有不兼容板子(基于s3c2440,4.3寸屏)
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@



顺便说一下:
期间不知道做到哪一步的时候遇到了个问题2
error while loading shared libraries: libts-0.0.so.0: cannot open shared object file

查网资料:把libts-0.0.so.0所在路径添加到LD_LIBRARY_PATH中就行了
修改一下前面配的环境变量
# vim /etc/bashrc

LD_LIBRARY_PATH=路径:$LD_LIBRARY_PATH  
(我的"路径"是:usr/local/lib,我也奇怪为什么要设置。。。。这个路径不是本来就在系统的环境变量里面有吗?)

export LD_LIBRARY_PATH

# source /etc/profile


我有这个详细编译步骤文档3.3.8的,需要的留邮箱给你发送。


小弟没有分送,只能祝各位达人见谅了

1 个解决方案

#1


忘了说重新编译时候要去掉那个:
./configure -qt-libjpeg -qt-gif -qt-libpng -system-libjpeg -qt-libmng -qt-imgfmt-jpeg -embedded arm -thread -no-cups -no-stl -no-mouse-pc -no-mouse-yope -no-mouse-bus -no-mouse-vr41xx -qt-mouse-tslib -I/share/tslib/include -L/share/tslib/lib -lts -qconfig local -depths 4,8,16,32 -qvfb

”-I/share/tslib/include -L/share/tslib/lib“这个要去掉

#1


忘了说重新编译时候要去掉那个:
./configure -qt-libjpeg -qt-gif -qt-libpng -system-libjpeg -qt-libmng -qt-imgfmt-jpeg -embedded arm -thread -no-cups -no-stl -no-mouse-pc -no-mouse-yope -no-mouse-bus -no-mouse-vr41xx -qt-mouse-tslib -I/share/tslib/include -L/share/tslib/lib -lts -qconfig local -depths 4,8,16,32 -qvfb

”-I/share/tslib/include -L/share/tslib/lib“这个要去掉