• 6305阅读
  • 9回复

立宇泰的开发板armsys2440在qt_arm环境下make 错误求救? [复制链接]

上一主题 下一主题
离线zbzharp
 

只看楼主 倒序阅读 楼主  发表于: 2008-07-13
立宇泰的开发板armsys2440在qt_arm环境下make 错误求救?
— 本帖被 XChinux 从 Qt Programming 移动到本区(2008-07-14) —
紧急求助,我买了一块立宇泰的开发板armsys2440,用qt编了一个小程序在arm环境下make 出错:
[root@localhost 626]# make gcc -o cam cam.o main.o moc_cam.o -L/armsys2440/qt_arm/qt/lib -lqte /usr/bin/ld: skipping incompatible /armsys2440/qt_arm/qt/lib/libqte.so when searching for -lqte /usr/bin/ld: cannot find -lqte collect2: ld returned 1 exit status make: *** [cam] Error 1 [root@localhost 626]#
注:在此qt_arm环境下 make 立宇泰自带的"HELLO world"没问题,生成了可执行程序。
哪位大哥帮忙确定一下 是什么原因造成的!!!     不甚感激!!!
[ 此贴被XChinux在2008-09-10 11:18重新编辑 ]
离线youngst

只看该作者 1楼 发表于: 2008-07-14
makefile的问题吧。arm环境怎么是gcc和ld呢?
离线zuogenyu

只看该作者 2楼 发表于: 2008-07-14
echo $PATH
echo $LD_LIBRARY_PATH
echo $TMAKEPATH
看看这几个有没,如果没有加上.

ld: cannot find -lqte 就是说没有找到qt的库.
离线zbzharp

只看该作者 3楼 发表于: 2008-07-17
谢谢 youngst 和 zuogenyu 的关注,
1、首先要对zuogenyu 说,qt-arm的环境已经设置了内容如下:
export QTDIR=$PWD/qt
export QPEDIR=$PWD/qtopia
export TMAKEDIR=$PWD/tmake
export TMAKEPATH=$TMAKEDIR/lib/qws/linux-generic-g++
export PATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib:/usr/lib/qt-3.1/lib:$LD_LIBRARY_PATH

应该不是环境设置问题。

2、对于youngst所说,我也有怀疑,但是为啥在此环境“hello world”可以编译通过?我的ARM环境建立是用他们提供的./budildarm 批处理命令安装配置的,我看了一下它的内容为:

#!/bin/bash

tar xfvz tmake-1.11.tar.gz
tar xfvz qt-embedded-2.3.7.tar.gz
tar xfvz qtopia-free-1.7.0.tar.gz
tar xfvz qt-x11-2.3.2.tar.gz
mv tmake-1.11 tmake
mv qt-2.3.7/ qt
mv qtopia-free-1.7.0 qtopia
mv qt-2.3.2 qt-x11
cd qt-x11
export QTDIR=$PWD
echo yes | ./configure -static -no-xft -no-opengl -no-sm
make -C src/moc
cp src/moc/moc bin
make -C src
make -C tools/designer
make -C tools/qvfb
cp tools/qvfb/qvfb bin
strip bin/uic bin/moc bin/designer bin/qvfb
cd ..
cp qt-x11/bin/?* qt/bin
rm -fr qt-x11
export QTDIR=$PWD/qt
export QPEDIR=$PWD/qtopia
export TMAKEDIR=$PWD/tmake
export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++
export PATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATH
cd qt
make clean
cp ../qtopia/src/qt/qconfig-qpe.h src/tools/
(echo yes ; echo no) | ./configure -platform linux-arm-g++  -qconfig qpe -depths 16,24,32
make -C src
cd ..
cd qtopia/src
./configure  -platform linux-arm-g++
make

哎可惜我这方面水平太差,看不大懂。
另外附上我在另外一台机子在此环境下程序的Makefile文件的内容和出错信息,希望大家能一起研究研究:
出错信息:
[root@localhost 626]# make
gcc  -o cam    -L/armsys2440/qt_arm/qt/lib -lqte
/usr/bin/ld: cannot find -lqte
collect2: ld returned 1 exit status
make: *** [cam] Error 1

Makefile文件:

#############################################################################
# Makefile for building cam
# Generated by tmake at 23:57, 2008/07/16
#    Project: cam
#    Template: app
#############################################################################

####### Compiler, tools and options

CC    =    gcc
CXX    =    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    =    gcc
LFLAGS    =   
LIBS    =    $(SUBLIBS) -L$(QTDIR)/lib -lqte
MOC    =    $(QTDIR)/bin/moc
UIC    =    $(QTDIR)/bin/uic

TAR    =    tar -cf
GZIP    =    gzip -9f

####### Files

HEADERS =   
SOURCES =   
OBJECTS =   
INTERFACES =   
UICDECLS =   
UICIMPLS =   
SRCMOC    =   
OBJMOC    =   
DIST    =   
TARGET    =    cam
INTERFACE_DECL_PATH = .

####### Implicit rules

.SUFFIXES: .cpp .cxx .cc .C .c

.cpp.o:
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.cxx.o:
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.cc.o:
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.C.o:
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.c.o:
    $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<

####### Build rules


all: $(TARGET)

$(TARGET): $(UICDECLS) $(OBJECTS) $(OBJMOC)
    $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJMOC) $(LIBS)

moc: $(SRCMOC)

tmake: Makefile

Makefile: cam.pro
    tmake cam.pro -o Makefile

dist:
    $(TAR) cam.tar cam.pro $(SOURCES) $(HEADERS) $(INTERFACES) $(DIST)
    $(GZIP) cam.tar

clean:
    -rm -f $(OBJECTS) $(OBJMOC) $(SRCMOC) $(UICIMPLS) $(UICDECLS) $(TARGET)
    -rm -f *~ core

####### Sub-libraries


###### Combined headers


####### Compile


不知为何 在此环境下CC=gcc  CXX    =g++  纳闷 郁闷
离线高兴就好
只看该作者 4楼 发表于: 2008-07-17
楼主编译完成的程序是想跑在X86的机器上还是ARM的机器上?
如果是X86的机器
那么生成Makefile的时候要用qmake命令
如果是ARM的机器
那么生成Makefile的时候要用tmake命令

看你Makefile文件中的CC、CXX和LINK的内容,是要在X86的机器上运行,因为不是交叉编译
但LIBS里面的-lqte是在ARM上运行的库文件
请楼主核实一下情况
/usr/bin/ld: cannot find -lqte 这种情况我遇到过很多次
我感觉我能帮你解决
我先了解一下情况
希望不要见怪
离线zbzharp

只看该作者 5楼 发表于: 2008-07-17
谢谢 热心的高兴就好!!!
我需要的是运行在ARM上的程序,我用的是tmake -o Makefile cam.pro.
tmake和qmake仅是生成Makefile的工具,他们的区别与X86和arm无关,
详见:http://www.qtcn.org/bbs/read.php?tid=3086

我觉得问题还在环境的设置,设置了X86的环境,不管用什么生成Makefile,make之后就生成X86下的程序,ARM同理.
关键是那个./budildarm 批处理文件,我看不大懂,请看自带的"hello world"的ARM环境下通过的Makefile:

############################################################################
# Automatically generated from /friendly-arm/gui/free-qtopia-arm/hello/Makefile.in
# Build options from
#############################################################################

default: all  #

CONTROL =

# Compiling
INTERFACE_DECL_PATH     = .
SYSCONF_CXX        = arm-linux-g++
SYSCONF_CC        = arm-linux-gcc
DASHCROSS        = -arm

# Compiling with support libraries
SYSCONF_CXXFLAGS_X11    =
SYSCONF_CXXFLAGS_QT    = -I$(QTDIR)/include
SYSCONF_CXXFLAGS_QTOPIA    = -I$(QPEDIR)/include
SYSCONF_CFLAGS_QTOPIA    = -I$(QPEDIR)/include
SYSCONF_CXXFLAGS_OPENGL    = -I/usr/X11R6/include

# Compiling YACC output
SYSCONF_CXXFLAGS_YACC    = -Wno-unused -Wno-parentheses

# Linking with support libraries
SYSCONF_RPATH_X11    =
SYSCONF_RPATH_QT    = -Wl,-rpath,$(QTDIR)/lib
SYSCONF_RPATH_QTOPIA    = -Wl,-rpath,$(QPEDIR)/lib
SYSCONF_RPATH_OPENGL    = -Wl,-rpath,/usr/X11R6/lib

# Linking with support libraries
# X11
SYSCONF_LFLAGS_X11    =
SYSCONF_LIBS_X11    =
# Qt, Qt+OpenGL
SYSCONF_LFLAGS_QT    = -L$(QTDIR)/lib
SYSCONF_LFLAGS_QTOPIA    = -L$(QPEDIR)/lib
SYSCONF_LIBS_QT        = -lqte$(QT_THREAD_SUFFIX)
SYSCONF_LIBS_QT_OPENGL    =
SYSCONF_LIBS_QTOPIA    = -lqtopia
# OpenGL
SYSCONF_LFLAGS_OPENGL    = -L/usr/X11R6/lib
SYSCONF_LIBS_OPENGL    =
# Yacc
SYSCONF_LIBS_YACC    =

# Linking applications
SYSCONF_LINK        = arm-linux-gcc
SYSCONF_LFLAGS        =
SYSCONF_LIBS        = -lm

# Link flags for shared objects
SYSCONF_LFLAGS_SHOBJ    = -shared

# Flags for threading
SYSCONF_CFLAGS_THREAD    = -D_REENTRANT
SYSCONF_CXXFLAGS_THREAD    = -D_REENTRANT
SYSCONF_LFLAGS_THREAD    =
SYSCONF_LIBS_THREAD    =  -lpthread

# Meta-object compiler
SYSCONF_MOC        = $(QTDIR)/bin/moc

# UI compiler
SYSCONF_UIC        = $(QTDIR)/bin/uic

# Linking shared libraries
#  - Build the $(TARGET) library, eg. lib$(TARGET).so.2.2.2
#  - Place target in $(DESTDIR) - which has a trailing /
#  - Usually needs to incorporate $(VER_MAJ), $(VER_MIN) and $(VER_PATCH)
#
SYSCONF_LINK_SHLIB    = arm-linux-gcc
SYSCONF_LINK_TARGET_SHARED    = lib$(TARGET).so.$(VER_MAJ).$(VER_MIN).$(VER_PATCH)
SYSCONF_LINK_LIB_SHARED    =  $(SYSCONF_LINK_SHLIB) -shared -Wl,-soname,lib$(TARGET).so.$(VER_MAJ) \
                     $(LFLAGS) -o $(SYSCONF_LINK_TARGET_SHARED) \
                     $(OBJECTS) $(OBJMOC) $(LIBS) && \
                 mv $(SYSCONF_LINK_TARGET_SHARED) $(DESTDIR); \
                 cd $(DESTDIR) && \
                 rm -f lib$(TARGET).so lib$(TARGET).so.$(VER_MAJ) lib$(TARGET).so.$(VER_MAJ).$(VER_MIN); \
                 ln -s $(SYSCONF_LINK_TARGET_SHARED) lib$(TARGET).so; \
                 ln -s $(SYSCONF_LINK_TARGET_SHARED) lib$(TARGET).so.$(VER_MAJ); \
                 ln -s $(SYSCONF_LINK_TARGET_SHARED) lib$(TARGET).so.$(VER_MAJ).$(VER_MIN)

# Linking static libraries
#  - Build the $(TARGET) library, eg. lib$(TARGET).a
#  - Place target in $(DESTDIR) - which has a trailing /
#
SYSCONF_AR        = arm-linux-ar cqs
SYSCONF_LINK_TARGET_STATIC = lib$(TARGET).a
SYSCONF_LINK_LIB_STATIC    = rm -f $(DESTDIR)$(SYSCONF_LINK_TARGET_STATIC) ; \
                 $(SYSCONF_AR) $(DESTDIR)$(SYSCONF_LINK_TARGET_STATIC) $(OBJECTS) $(OBJMOC)
# Compiling application source
SYSCONF_CXXFLAGS    = -pipe -DQWS -fno-exceptions -fno-rtti -O2 -Wall -W -DNO_DEBUG
SYSCONF_CFLAGS        = -pipe -O2 -Wall -W
# Default link type (static linking is still be used where required)
SYSCONF_LINK_LIB    = $(SYSCONF_LINK_LIB_SHARED)
SYSCONF_LINK_TARGET    = $(SYSCONF_LINK_TARGET_SHARED)
# Compiling library source
SYSCONF_CXXFLAGS_LIB    = -fPIC
SYSCONF_CFLAGS_LIB    = -fPIC
# Compiling shared-object source
SYSCONF_CXXFLAGS_SHOBJ    = -fPIC
SYSCONF_CFLAGS_SHOBJ    = -fPIC
# Linking Qt
SYSCONF_LIBS_QTLIB    = $(SYSCONF_LFLAGS_X11) $(QT_LIBS_MT) $(QT_LIBS_OPT)
# Linking Qt applications
SYSCONF_LIBS_QTAPP    =

# Platform output directories
MOC_DIR = .moc/linux-arm-g++/
OBJECTS_DIR = .obj/linux-arm-g++/

#############################################################################

####### Compiler, tools and options

CXX    =    $(SYSCONF_CXX) $(QT_CXX_MT)
CXXFLAGS=    $(SYSCONF_CXXFLAGS_QTOPIA) $(SYSCONF_CXXFLAGS_QT) $(SYSCONF_CXXFLAGS) -DQTOPIA_APP_INTERFACE
CC    =    $(SYSCONF_CC) $(QT_C_MT)
CFLAGS    =    $(SYSCONF_CFLAGS_QTOPIA) $(SYSCONF_CFLAGS) -DQTOPIA_APP_INTERFACE
INCPATH =    -I$(MOC_DIR)
LFLAGS    =    $(SYSCONF_LFLAGS_QTOPIA) $(SYSCONF_RPATH_QTOPIA) $(SYSCONF_LFLAGS_QT) $(SYSCONF_RPATH_QT) $(SYSCONF_LFLAGS) $(QT_LFLAGS_MT)
LIBS    =    $(SUBLIBS) -lqpe $(SYSCONF_LIBS_QTOPIA) $(SYSCONF_LIBS_QT) $(SYSCONF_LIBS) $(SYSCONF_LIBS_QTAPP)
MOC    =    $(SYSCONF_MOC)
UIC    =    $(SYSCONF_UIC)

####### Target

DESTDIR = $(QPEDIR)/bin/
VER_MAJ = 1
VER_MIN = 0
VER_PATCH = 0
TARGET    = hello
TARGET1 = lib$(TARGET).so.$(VER_MAJ)

####### Files

HEADERS =    hello.h
SOURCES =    hello.cpp \
        main.cpp
OBJECTS =    $(OBJECTS_DIR)/hello.o \
        $(OBJECTS_DIR)/main.o \
        $(OBJECTS_DIR)/hello_base.o
INTERFACES =    hello_base.ui
UICDECLS =      hello_base.h
UICIMPLS =      hello_base.cpp
SRCMOC    =    $(MOC_DIR)/moc_hello_base.cpp
OBJMOC    =    $(OBJECTS_DIR)/moc_hello_base.o


####### Implicit rules

.SUFFIXES: .cpp .cxx .cc .C .c

.cpp.o:
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.cxx.o:
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.cc.o:
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.C.o:
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.c.o:
    $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<

####### Build rules


all: $(DESTDIR)$(TARGET)

$(DESTDIR)$(TARGET): $(UICDECLS) $(OBJECTS) $(OBJMOC) $(SUBLIBS)
    $(SYSCONF_LINK) $(LFLAGS) -o $(DESTDIR)$(TARGET) $(OBJECTS) $(OBJMOC) $(LIBS)

moc: $(SRCMOC)

tmake:
    tmake hello.pro

clean:
    -rm -f $(OBJECTS) $(OBJMOC) $(SRCMOC) $(UICIMPLS) $(UICDECLS)
    -rm -f *~ core
    -rm -f allmoc.cpp

####### Extension Modules

listpromodules:
    @echo

listallmodules:
    @echo

listaddonpromodules:
    @echo

listaddonentmodules:
    @echo


REQUIRES=

####### Sub-libraries


###### Combined headers



####### Compile

$(OBJECTS_DIR)/hello.o: hello.cpp \
        hello.h \
        hello_base.h
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $(OBJECTS_DIR)/hello.o hello.cpp

$(OBJECTS_DIR)/main.o: main.cpp \
        hello.h \
        hello_base.h
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $(OBJECTS_DIR)/main.o main.cpp

hello_base.h: hello_base.ui
    $(UIC) hello_base.ui -o $(INTERFACE_DECL_PATH)/hello_base.h

hello_base.cpp: hello_base.ui
    $(UIC) hello_base.ui -i hello_base.h -o hello_base.cpp

$(OBJECTS_DIR)/hello_base.o: hello_base.cpp \
        hello_base.h \
        hello_base.ui
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $(OBJECTS_DIR)/hello_base.o hello_base.cpp

$(OBJECTS_DIR)/moc_hello_base.o: $(MOC_DIR)/moc_hello_base.cpp \
        hello_base.h
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $(OBJECTS_DIR)/moc_hello_base.o $(MOC_DIR)/moc_hello_base.cpp

$(MOC_DIR)/moc_hello_base.cpp: hello_base.h
    $(MOC) hello_base.h -o $(MOC_DIR)/moc_hello_base.cpp



lupdate-check:
    @true

lupdate:
    @true

lrelease:
    @echo "No TRANSLATIONS"


ipkg: $(DESTDIR)$(TARGET) # among other things...
    CTL="$(CONTROL)"; for ctrl in $$CTL; do cd $(QPEDIR)/ipkg; ../bin/mkipks -platform linux-arm-g++  $(QPEDIR)/src/$$ctrl ; done

package: ipkg
    cd $(QPEDIR)/ipkg;     ../bin/mkPackages

Makefile: hello.pro
    cd $(QPEDIR)/src;     ./configure  -platform linux-arm-g++  -make /friendly-arm/gui/free-qtopia-arm/hello

望大家再探讨探讨! 唉有时真感慨linux qt/e arm 这几样宝贝实在问题多多 层出不群,搞的我焦头烂额 寝食难安 我不就想平平凡凡,用c 或c++编个arm程序吗? 不如意 十之八九
离线hpuer

只看该作者 6楼 发表于: 2008-09-06
他们提供的脚本是有问题的,我以前的2410也是这样的
离线zbzharp

只看该作者 7楼 发表于: 2008-09-08
好些天未来,早想结贴,今天上来发现hpuer 的回复,是的,非常感谢hpuer ,前些天,我已发现了这个问题,已解决,哎,这些让人可气又无奈的开发板商,我已发现好几处问题,没有一点严谨的态度。环境搭建这么重要的问题,也不解决,让人如何进行开发,苦了像我这般的初学者。亏了有如qtcn这些论坛和热血的兄弟们,望qtcn 以及众兄弟共勉共进。
离线zbzharp

只看该作者 8楼 发表于: 2008-09-08
好些天未来,早想结贴,今天上来发现hpuer 的回复,是的,非常感谢hpuer ,前些天,我已发现了这个问题,已解决,哎,这些让人可气又无奈的开发板商,我已发现好几处问题,没有一点严谨的态度。环境搭建这么重要的问题,也不解决,让人如何进行开发,苦了像我这般的初学者。亏了有如qtcn这些论坛和热血的兄弟们,望qtcn 以及众兄弟共勉共进。
离线jjxt
只看该作者 9楼 发表于: 2008-09-12
完啦,我买的也是这块开发板,不日到货,也要进行QTE开发。
不知道楼主怎么解决的,能否公布出来学习一下。
快速回复
限100 字节
 
上一个 下一个