• 8157阅读
  • 4回复

如何Linux静态编译? [复制链接]

上一主题 下一主题
离线tt67
 
只看楼主 倒序阅读 楼主  发表于: 2010-03-27
我在linux中 怎么样才能静态编译  QT4?


我找论坛的帖子没有找到合适的答案


哪位大虾能把 静态编译的步骤 贴出来?

请问 QT4.6做的程序 QT4.5能编译吗?
红联 www.linux110.com linux 命令查询 www.lx138.com
离线scorpiomo

只看该作者 1楼 发表于: 2010-03-31
我今天刚做了QtEmbedded4.5.3的静态编译,参考了下网上的资料,个人觉得有以下两个要点:
1.进入QtEmbedded解压目录下的mkspecs目录,选择你对应的环境(进入),我的是linux-g++-32,修改qmake.conf文件,将其中的QMAKE_LFLAGS一行改为“QMAKE_LFLAGS=-static -static-libgcc -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc”,然后在./configure的时候加上-static
2.在交叉编译QT程序之前修改makefile文件,为CFLAGS、和LFLAGS加上 -static参数。

这是我的做法,不知是否对你有帮助。一家之言,如有疏漏还请各位指正。
离线scorpiomo

只看该作者 2楼 发表于: 2010-03-31
呃,看错了,以为lz说的是QtEmbedded
离线tt67
只看该作者 3楼 发表于: 2010-04-02
请问CFLAGS、和LFLAGS 参数在加载那?   这是得Makefile



#############################################################################
# Makefile for building: 3
# Generated by qmake (2.01a) (Qt 4.4.0) on: ?? ?? 1 16:16:03 2010
# Project:  3.pro
# Template: app
# Command: /home/sprife/qt4/for_arm/qt-embedded-linux-opensource-src-4.4.0/bin/qmake -unix -o Makefile 3.pro
#############################################################################

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

CC            = arm-linux-gcc
CXX           = arm-linux-g++
DEFINES       = -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED
CFLAGS        = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
CXXFLAGS      = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
INCPATH       = -I/mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/qws/linux-arm-g++ -I. -I/mnt/nfs/Trolltech/qt-embedded-4.4.0/include/QtCore -I/mnt/nfs/Trolltech/qt-embedded-4.4.0/include/QtCore -I/mnt/nfs/Trolltech/qt-embedded-4.4.0/include/QtNetwork -I/mnt/nfs/Trolltech/qt-embedded-4.4.0/include/QtNetwork -I/mnt/nfs/Trolltech/qt-embedded-4.4.0/include/QtGui -I/mnt/nfs/Trolltech/qt-embedded-4.4.0/include/QtGui -I/mnt/nfs/Trolltech/qt-embedded-4.4.0/include -I. -I. -I.
LINK          = arm-linux-g++
LFLAGS        = -Wl,-rpath,/mnt/nfs/Trolltech/qt-embedded-4.4.0/lib
LIBS          = $(SUBLIBS)  -L/mnt/nfs/Trolltech/qt-embedded-4.4.0/lib -lQtGui -L/home/sprife/qt4/for_arm/tslib1.4-install/lib -L/mnt/nfs/Trolltech/qt-embedded-4.4.0/lib -lts -lQtNetwork -lQtCore -lz -lm -lrt -ldl -lpthread
AR            = arm-linux-ar cqs
RANLIB        = arm-linux-ranlib
QMAKE         = /home/sprife/qt4/for_arm/qt-embedded-linux-opensource-src-4.4.0/bin/qmake
TAR           = tar -cf
COMPRESS      = gzip -9f
COPY          = cp -f
SED           = sed
COPY_FILE     = $(COPY)
COPY_DIR      = $(COPY) -R
INSTALL_FILE  = $(COPY_FILE)
INSTALL_DIR   = $(COPY_DIR)
INSTALL_PROGRAM = $(COPY_FILE)
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   = ./

####### Files

SOURCES       = main.cpp \
        mainsnail.cpp moc_mainsnail.cpp
OBJECTS       = main.o \
        mainsnail.o \
        moc_mainsnail.o
DIST          = /mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/qconfig.pri \
        /mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/qt_functions.prf \
        /mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/qt_config.prf \
        /mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/exclusive_builds.prf \
        /mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/default_pre.prf \
        /mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/release.prf \
        /mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/default_post.prf \
        /mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/warn_on.prf \
        /mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/qt.prf \
        /mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/unix/thread.prf \
        /mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/moc.prf \
        /mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/resources.prf \
        /mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/uic.prf \
        /mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/yacc.prf \
        /mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/lex.prf \
        3.pro
QMAKE_TARGET  = 3
DESTDIR       =
TARGET        = 3

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

.SUFFIXES: .o .c .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): ui_mainsnail.h $(OBJECTS)  
    $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)

Makefile: 3.pro  /mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/qws/linux-arm-g++/qmake.conf /mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/qconfig.pri \
        /mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/qt_functions.prf \
        /mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/qt_config.prf \
        /mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/exclusive_builds.prf \
        /mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/default_pre.prf \
        /mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/release.prf \
        /mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/default_post.prf \
        /mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/warn_on.prf \
        /mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/qt.prf \
        /mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/unix/thread.prf \
        /mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/moc.prf \
        /mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/resources.prf \
        /mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/uic.prf \
        /mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/yacc.prf \
        /mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/lex.prf \
        /mnt/nfs/Trolltech/qt-embedded-4.4.0/lib/libQtGui.prl \
        /mnt/nfs/Trolltech/qt-embedded-4.4.0/lib/libQtNetwork.prl \
        /mnt/nfs/Trolltech/qt-embedded-4.4.0/lib/libQtCore.prl
    $(QMAKE) -unix -o Makefile 3.pro
/mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/qconfig.pri:
/mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/qt_functions.prf:
/mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/qt_config.prf:
/mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/exclusive_builds.prf:
/mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/default_pre.prf:
/mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/release.prf:
/mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/default_post.prf:
/mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/warn_on.prf:
/mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/qt.prf:
/mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/unix/thread.prf:
/mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/moc.prf:
/mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/resources.prf:
/mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/uic.prf:
/mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/yacc.prf:
/mnt/nfs/Trolltech/qt-embedded-4.4.0/mkspecs/features/lex.prf:
/mnt/nfs/Trolltech/qt-embedded-4.4.0/lib/libQtGui.prl:
/mnt/nfs/Trolltech/qt-embedded-4.4.0/lib/libQtNetwork.prl:
/mnt/nfs/Trolltech/qt-embedded-4.4.0/lib/libQtCore.prl:
qmake:  FORCE
    @$(QMAKE) -unix -o Makefile 3.pro

dist:
    @$(CHK_DIR_EXISTS) .tmp/31.0.0 || $(MKDIR) .tmp/31.0.0
    $(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/31.0.0/ && $(COPY_FILE) --parents mainsnail.h .tmp/31.0.0/ && $(COPY_FILE) --parents main.cpp mainsnail.cpp .tmp/31.0.0/ && $(COPY_FILE) --parents mainsnail.ui .tmp/31.0.0/ && (cd `dirname .tmp/31.0.0` && $(TAR) 31.0.0.tar 31.0.0 && $(COMPRESS) 31.0.0.tar) && $(MOVE) `dirname .tmp/31.0.0`/31.0.0.tar.gz . && $(DEL_FILE) -r .tmp/31.0.0


clean:compiler_clean
    -$(DEL_FILE) $(OBJECTS)
    -$(DEL_FILE) *~ core *.core


####### Sub-libraries

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


mocclean: compiler_moc_header_clean compiler_moc_source_clean

mocables: compiler_moc_header_make_all compiler_moc_source_make_all

compiler_moc_header_make_all: moc_mainsnail.cpp
compiler_moc_header_clean:
    -$(DEL_FILE) moc_mainsnail.cpp
moc_mainsnail.cpp: mainsnail.h
    /mnt/nfs/Trolltech/qt-embedded-4.4.0/bin/moc $(DEFINES) $(INCPATH) mainsnail.h -o moc_mainsnail.cpp

compiler_rcc_make_all:
compiler_rcc_clean:
compiler_image_collection_make_all: qmake_image_collection.cpp
compiler_image_collection_clean:
    -$(DEL_FILE) qmake_image_collection.cpp
compiler_moc_source_make_all:
compiler_moc_source_clean:
icompiler_uic_make_all: ui_mainsnail.h
compiler_uic_clean:
    -$(DEL_FILE) ui_mainsnail.h
ui_mainsnail.h: mainsnail.ui
    /mnt/nfs/Trolltech/qt-embedded-4.4.0/bin/uic mainsnail.ui -o ui_mainsnail.h

compiler_yacc_decl_make_all:
compiler_yacc_decl_clean:
compiler_yacc_impl_make_all:
compiler_yacc_impl_clean:
compiler_lex_make_all:
compiler_lex_clean:
compiler_clean: compiler_moc_header_clean compiler_uic_clean

####### Compile

main.o: main.cpp mainsnail.h
    $(CXX) -c $(CXXFLAGS)  $(INCPATH) -o my -static  main.o  main.cpp

mainsnail.o: mainsnail.cpp mainsnail.h \
        ui_mainsnail.h
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o mainsnail.o mainsnail.cpp

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

####### Install

install:   FORCE

uninstall:   FORCE

FORCE:
红联 www.linux110.com linux 命令查询 www.lx138.com
离线scorpiomo

只看该作者 4楼 发表于: 2010-04-06
CFLAGS        = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
LFLAGS        = -Wl,-rpath,/mnt/nfs/Trolltech/qt-embedded-4.4.0/lib

加在这两行后面,试试看行不行
快速回复
限100 字节
 
上一个 下一个