• 4973阅读
  • 5回复

同一个程序 用tmake 能在arm板子上跑 用qamke就不行???? [复制链接]

上一主题 下一主题
离线laoban132
 

只看楼主 倒序阅读 楼主  发表于: 2008-03-30
同一个程序 用tmake 能在arm板子上跑 用qamke就不行????
— 本帖被 XChinux 执行加亮操作(2008-04-01) —
同一个hello程序
为什么用tmake生成Makefile, 再make之后生成的程序 能在2410板子上运行
用qmake生成Makefile, make之后生成的程序 就不能在2410板子上运行呢
我用的版本是
qt-embedded-free-3.3.5(自带的qmake)
tmake-1.11
程序也是qte3.3.5自带的hello程序
请大家帮帮忙啊!!!!!!
我把两个Makefile 文件贴上来

这个是qmake生成的:
CC      = arm-linux-gcc
CXX      = arm-linux-g++
LEX      = flex
YACC    = yacc
CFLAGS  = -pipe -O2 -D_REENTRANT  -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED
CXXFLAGS = -pipe -DQWS -fno-exceptions -fno-rtti -O2 -D_REENTRANT  -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED
LEXFLAGS =
YACCFLAGS= -d
INCPATH  = -I/target/qt-target/mkspecs/qws/linux-arm-g++ -I. -I. -I/target/qt-target/include -I.moc/release-shared-mt-emb-arm/
LINK    = arm-linux-g++
LFLAGS  =  -Wl,-rpath,/target/qt-target/lib
LIBS    = $(SUBLIBS) -L/target/qt-target/lib -lqte-mt -ldl -lpthread
AR      = ar cqs
RANLIB  =
MOC      = /target/qt-target/bin/moc
UIC      = /target/qt-target/bin/uic -L /target/qt-target/plugins
QMAKE    = /target/qt-target/bin/qmake
TAR      = tar -cf
GZIP    = gzip -9f
COPY    = cp -f
COPY_FILE= $(COPY)
COPY_DIR = $(COPY) -R
INSTALL_FILE= $(COPY_FILE)
INSTALL_DIR = $(COPY_DIR)
DEL_FILE = rm -f
SYMLINK  = ln -sf
DEL_DIR  = rmdir
MOVE    = mv -f
CHK_DIR_EXISTS= test -d
MKDIR    = mkdir -p

####### Output directory

OBJECTS_DIR = .obj/release-shared-mt-emb-arm/

####### Files

HEADERS = hello.h
SOURCES = hello.cpp \
        main.cpp
OBJECTS = .obj/release-shared-mt-emb-arm/hello.o \
        .obj/release-shared-mt-emb-arm/main.o
FORMS =
UICDECLS =
UICIMPLS =
SRCMOC  = .moc/release-shared-mt-emb-arm/moc_hello.cpp
OBJMOC = .obj/release-shared-mt-emb-arm/moc_hello.o
DIST       = hello.pro
QMAKE_TARGET = hello
DESTDIR  =
TARGET  = hello

first: all
####### Implicit rules

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

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

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

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

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

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

####### Build rules

all: Makefile $(TARGET)

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

mocables: $(SRCMOC)
uicables: $(UICDECLS) $(UICIMPLS)

$(MOC):
    ( cd /target/qt-target/src/moc && $(MAKE) )

Makefile: hello.pro ../../.qmake.cache /target/qt-target/mkspecs/qws/linux-arm-g++/qmake.conf ../../lib/libqte-mt.prl
    $(QMAKE) -o Makefile hello.pro
qmake:
    @$(QMAKE) -o Makefile hello.pro

dist:
    @mkdir -p .obj/release-shared-mt-emb-arm/hello && $(COPY_FILE) --parents $(SOURCES) $(HEADERS) $(FORMS) $(DIST) .obj/release-shared-mt-emb-arm/hello/ && ( cd `dirname .obj/release-shared-mt-emb-arm/hello` && $(TAR) hello.tar hello && $(GZIP) hello.tar ) && $(MOVE) `dirname .obj/release-shared-mt-emb-arm/hello`/hello.tar.gz . && $(DEL_FILE) -r .obj/release-shared-mt-emb-arm/hello

mocclean:
    -$(DEL_FILE) $(OBJMOC)
    -$(DEL_FILE) $(SRCMOC)

uiclean:

yaccclean:
lexclean:
clean: mocclean
    -$(DEL_FILE) $(OBJECTS)
    -$(DEL_FILE) *~ core *.core


####### Sub-libraries

distclean: clean
    -$(DEL_FILE) $(TARGET) $(TARGET)


FORCE:

####### Compile

.obj/release-shared-mt-emb-arm/hello.o: hello.cpp hello.h
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/release-shared-mt-emb-arm/hello.o hello.cpp

.obj/release-shared-mt-emb-arm/main.o: main.cpp hello.h
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/release-shared-mt-emb-arm/main.o main.cpp

.obj/release-shared-mt-emb-arm/moc_hello.o: .moc/release-shared-mt-emb-arm/moc_hello.cpp  hello.h
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/release-shared-mt-emb-arm/moc_hello.o .moc/release-shared-mt-emb-arm/moc_hello.cpp

.moc/release-shared-mt-emb-arm/moc_hello.cpp: $(MOC) hello.h
    $(MOC) hello.h -o .moc/release-shared-mt-emb-arm/moc_hello.cpp

####### Install

install: 

uninstall: 


下面这个是用tmake生成的:
####### 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. -I$(QTDIR)/include
LINK    =    arm-linux-g++
LFLAGS    =   
LIBS    =    $(SUBLIBS) -L$(QTDIR)/lib -lm -lqte-mt
MOC    =    $(QTDIR)/bin/moc
UIC    =    $(QTDIR)/bin/uic

TAR    =    tar -cf
GZIP    =    gzip -9f

####### Files

HEADERS =    hello.h
SOURCES =    hello.cpp \
        main.cpp
OBJECTS =    hello.o \
        main.o
INTERFACES =   
UICDECLS =   
UICIMPLS =   
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

main.o: main.cpp \
        hello.h

moc_hello.o: moc_hello.cpp \
        hello.h

moc_hello.cpp: hello.h
    $(MOC) hello.h -o moc_hello.cpp
离线chocolate
只看该作者 1楼 发表于: 2008-03-31
很正常啊
tmake用于交叉编译吧,好像是用在嵌入式平台上的
qmake 好像是用在x86上的吧...
我记得是这样的 ....很久以前看的...
离线laoban132

只看该作者 2楼 发表于: 2008-03-31
谢谢楼上的
qmake 应该可以用于交叉编译的
离线laoban132

只看该作者 3楼 发表于: 2008-03-31
现在我把
LFLAGS  =  -Wl,-rpath,/target/qt-target/lib
改成
LFLAGS  =
就行了  但不知道是为什么 呵呵~~~~~~~~~``
[ 此贴被laoban132在2008-04-01 09:25重新编辑 ]
离线imho
只看该作者 4楼 发表于: 2008-04-01
qmake 生成后

LFLAGS  =  -Wl,-rpath,$(QTDIR)/lib

可能是你的环境配置不正确
离线laoban132

只看该作者 5楼 发表于: 2008-04-02
先谢谢楼上的兄弟
我也不知道怎么搞的 里面都是绝对路径
但我确实也设置了环境变量QTDIR=/target/qt-target
快速回复
限100 字节
 
上一个 下一个