• 7647阅读
  • 16回复

救急:交叉编译出错 [复制链接]

上一主题 下一主题
离线hitszboy
 
只看楼主 倒序阅读 楼主  发表于: 2008-05-26
— 本帖被 XChinux 执行加亮操作(2008-05-27) —
tmake-1.11 qt/e-2.3.7 qt/x11-2.3.2安装成功后
按照书上的例子写hello,world程序,交叉编译的时候出了一堆"libqte.so:undefined reference to..."这样的错误,问题可能出在哪里呢?
下面是用tmake生成的makefile文件

#############################################################################
# Makefile for building hello
# Generated by tmake at 11:34, 2008/05/26
#     Project: hello
#    Template: app
#############################################################################

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

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

TAR    =    tar -cf
GZIP    =    gzip -9f

####### Files

HEADERS =    hello.h
SOURCES =    hello.cpp \
        main.cpp
OBJECTS =    main.o \
        hello.o
INTERFACES =    hello.ui
UICDECLS =    hello.h
UICIMPLS =    hello.cpp
SRCMOC    =    moc_hello.cpp
OBJMOC    =    moc_hello.o
DIST    =   
TARGET    =    hello
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: hello.pro
    tmake hello.pro -o makefile

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

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

####### Sub-libraries


###### Combined headers


####### Compile

hello.o: hello.cpp \
        hello.h \
        hello.ui

main.o: main.cpp \
        hello.h

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

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

moc_hello.o: moc_hello.cpp \
        hello.h

moc_hello.cpp: hello.h
    $(MOC) hello.h -o moc_hello.cpp
[ 此贴被XChinux在2008-08-02 20:46重新编辑 ]
离线hitszboy
只看该作者 1楼 发表于: 2008-05-26
被这个问题折磨了n天了,请高手指教啊
离线hitszboy
只看该作者 2楼 发表于: 2008-05-27
               
怎么每人给点建议啊
有没有遇到过这种问题的呢
离线shiroki

只看该作者 3楼 发表于: 2008-05-27
export的输出和错误信息都要贴全
--
shiro is White
ki is tree
http://www.cuteqt.com
论坛 http://www.cuteqt.com/bbs
博客 http://www.cuteqt.com/blog
博客镜像: http://sites.cuteqt.com/cuteqt
Linux/Qt/嵌入式讨论群 http://qun.qq.com/air/5699823
离线hitszboy
只看该作者 4楼 发表于: 2008-05-28
export TMAKEDIR=/root/sf/tmake-1.11
export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++
export PATH=$TMAKEDIR/bin:$PATH

export QTEDIR=/usr/qt/qt-2.3.7
export QTDIR=/usr/qt/qt-2.3.7
export PATH=$QTEDIR/bin:/usr/local/arm/2.95.3/bin:$PATH
export LD_LIBRARY_PATH=$QTEDIR/lib:$LD_LIBRARY_PATH



/usr/qt/qt-2.3.7/bin/uic hello.ui -o ./hello.h
arm-linux-g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -DNO_DEBUG -I/usr/qt/qt-2.3.7/include -o main.o main.cpp
/usr/qt/qt-2.3.7/bin/uic hello.ui -i hello.h -o hello.cpp
arm-linux-g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -DNO_DEBUG -I/usr/qt/qt-2.3.7/include -o hello.o hello.cpp
/usr/qt/qt-2.3.7/bin/moc hello.h -o moc_hello.cpp
arm-linux-g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -DNO_DEBUG -I/usr/qt/qt-2.3.7/include -o moc_hello.o moc_hello.cpp
arm-linux-g++  -o hello main.o hello.o moc_hello.o  -L/usr/qt/qt-2.3.7/lib -lm -lqte -I/usr/qt/qt-2.3.7/include
moc_hello.o:In function 'Hello::static MetaObject(void)'
moc_hello.o:(.text+0x34):undefined reference to 'QWidget::className(void) const'

.......部分省略......

/usr/qt/qt-2.3.7/lib/libqte.so: undefined reference to `QPopupMenu::activated(int)'
/usr/qt/qt-2.3.7/lib/libqte.so: undefined reference to `QTextDrag::QMimeSource virtual table'
/usr/qt/qt-2.3.7/lib/libqte.so: undefined reference to `QHeader::orientation(void) const'
/usr/qt/qt-2.3.7/lib/libqte.so: undefined reference to `QMenuBar::QMenuData virtual table'
/usr/qt/qt-2.3.7/lib/libqte.so: undefined reference to `QHeader::indexChange(int, int, int)'
/usr/qt/qt-2.3.7/lib/libqte.so: undefined reference to `QButton::state(void) const'
/usr/qt/qt-2.3.7/lib/libqte.so: undefined reference to `QHeader::sizeChange(int, int, int)'
/usr/qt/qt-2.3.7/lib/libqte.so: undefined reference to `QVGroupBox::QPaintDevice virtual table'
/usr/qt/qt-2.3.7/lib/libqte.so: undefined reference to `QIconView::pressed(QIconViewItem *)'
/usr/qt/qt-2.3.7/lib/libqte.so: undefined reference to `QScrollBar::QRangeControl virtual table'
collect2: ld returned 1 exit status
离线hitszboy
只看该作者 5楼 发表于: 2008-05-28
请高手帮忙分析分析啊
离线hitszboy
只看该作者 6楼 发表于: 2008-05-29
给点意见吧
离线sprife
只看该作者 7楼 发表于: 2008-05-29
如果环境变量没错误,clean下后再make 如果不能解决,可能有两个原因,一个是库不匹配,一个是要重新tmake生成makefile  ^^
好运!
离线hitszboy
只看该作者 8楼 发表于: 2008-05-29
重新生成tmake也不行
欢迎大家发表高见,成功后经验和大家共享
离线hitszboy
只看该作者 9楼 发表于: 2008-05-29
自己动手,丰衣足食
重新下载了qt/e-2.3.7,安装
然后就可以了
但是又出现了新问题 make之后生成可执行文件hello
./hello -qws
提示 can not execute binary file
请大家建言
离线three-9
只看该作者 10楼 发表于: 2008-06-02
交叉编译好的是二进制文件,只能在arm上运行,在PC上不行
离线miaoronghua
只看该作者 11楼 发表于: 2008-06-06
你第一个问题:我的感觉是你QT没有编译好,你PC其他什么地方有lqte.so这个文件copy一下试试,不然就重装
第二个问题:你用的是交叉编译工具,在PC上当然不能跑,下载到扳子上啊
离线shiroki

只看该作者 12楼 发表于: 2008-06-06
ms你在pc上运行了arm版的hello
--
shiro is White
ki is tree
http://www.cuteqt.com
论坛 http://www.cuteqt.com/bbs
博客 http://www.cuteqt.com/blog
博客镜像: http://sites.cuteqt.com/cuteqt
Linux/Qt/嵌入式讨论群 http://qun.qq.com/air/5699823
离线libolipo
只看该作者 13楼 发表于: 2008-06-19
编译qt-embedded 时,./configure -xplatform linux-arm-g++ -thread 添加thread选项
离线guoxiongmao
只看该作者 14楼 发表于: 2008-11-25
楼主不知道怎么做成功的
离线emofazelgp
只看该作者 15楼 发表于: 2009-03-18
这个不能在PC 上运行的
离线wuchuan
只看该作者 16楼 发表于: 2009-03-19
can not execute binary file
这个问题是因为没有经过交叉编译,或者是交叉编译的编译器版本不匹配。
快速回复
限100 字节
 
上一个 下一个