linux 下的qt加载动态库,qt调用Linux下自定义的动态链接库有关问题

C/C++ code#############################################################################

# Makefile for building: testqt

# Generated by qmake (2.01a) (Qt 4.6.2) on: Sun Sep 18 21:01:58 2011

# Project: testqt.pro

# Template: app

# Command: /usr/bin/qmake -unix -o Makefile testqt.pro

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

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

CC = gcc

CXX = g++

DEFINES = -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED

CFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)

CXXFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)

INCPATH = -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I.

LINK = g++

LFLAGS = -Wl,-O1

LIBS = $(SUBLIBS) -L/usr/lib -lQtGui -lQtCore -lpthread -L../lib/ -lsock

AR = ar cqs

RANLIB =

QMAKE = /usr/bin/qmake

TAR = tar -cf

COMPRESS = gzip -9f

COPY = cp -f

SED = sed

COPY_FILE = $(COPY)

COPY_DIR = $(COPY) -r

STRIP = strip

INSTALL_FILE = install -m 644 -p

INSTALL_DIR = $(COPY_DIR)

INSTALL_PROGRAM = install -m 755 -p

DEL_FILE = rm -f

SYMLINK = ln -f -s

DEL_DIR = rmdir

MOVE = mv -f

CHK_DIR_EXISTS= test -d

MKDIR = mkdir -p

####### Output directory

OBJECTS_DIR = ./

####### Files

SOURCES = main.cpp

OBJECTS = main.o

DIST = /usr/share/qt4/mkspecs/common/g++.conf \

/usr/share/qt4/mkspecs/common/unix.conf \

/usr/share/qt4/mkspecs/common/linux.conf \

/usr/share/qt4/mkspecs/qconfig.pri \

/usr/share/qt4/mkspecs/features/qt_functions.prf \

/usr/share/qt4/mkspecs/features/qt_config.prf \

/usr/share/qt4/mkspecs/features/exclusive_builds.prf \

/usr/share/qt4/mkspecs/features/default_pre.prf \

/usr/share/qt4/mkspecs/features/release.prf \

/usr/share/qt4/mkspecs/features/default_post.prf \

/usr/share/qt4/mkspecs/features/warn_on.prf \

/usr/share/qt4/mkspecs/features/qt.prf \

/usr/share/qt4/mkspecs/features/unix/thread.prf \

/usr/share/qt4/mkspecs/features/moc.prf \

/usr/share/qt4/mkspecs/features/resources.prf \

/usr/share/qt4/mkspecs/features/uic.prf \

/usr/share/qt4/mkspecs/features/yacc.prf \

/usr/share/qt4/mkspecs/features/lex.prf \

/usr/share/qt4/mkspecs/features/include_source_dir.prf \

testqt.pro

QMAKE_TARGET = testqt

DESTDIR =

TARGET = testqt

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): $(OBJECTS)

$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS) -L../lib -lsock

Makefile: testqt.pro /usr/share/qt4/mkspecs/linux-g++/qmake.conf /usr/share/qt4/mkspecs/common/g++.conf \

/usr/share/qt4/mkspecs/common/unix.conf \

/usr/share/qt4/mkspecs/common/linux.conf \

/usr/share/qt4/mkspecs/qconfig.pri \

/usr/share/qt4/mkspecs/features/qt_functions.prf \

/usr/share/qt4/mkspecs/features/qt_config.prf \

/usr/share/qt4/mkspecs/features/exclusive_builds.prf \

/usr/share/qt4/mkspecs/features/default_pre.prf \

/usr/share/qt4/mkspecs/features/release.prf \

/usr/share/qt4/mkspecs/features/default_post.prf \

/usr/share/qt4/mkspecs/features/warn_on.prf \

/usr/share/qt4/mkspecs/features/qt.prf \

/usr/share/qt4/mkspecs/features/unix/thread.prf \

/usr/share/qt4/mkspecs/features/moc.prf \

/usr/share/qt4/mkspecs/features/resources.prf \

/usr/share/qt4/mkspecs/features/uic.prf \

/usr/share/qt4/mkspecs/features/yacc.prf \

/usr/share/qt4/mkspecs/features/lex.prf \

/usr/share/qt4/mkspecs/features/include_source_dir.prf \

/usr/lib/libQtGui.prl \

/usr/lib/libQtCore.prl

$(QMAKE) -unix -o Makefile testqt.pro

/usr/share/qt4/mkspecs/common/g++.conf:

/usr/share/qt4/mkspecs/common/unix.conf:

/usr/share/qt4/mkspecs/common/linux.conf:

/usr/share/qt4/mkspecs/qconfig.pri:

/usr/share/qt4/mkspecs/features/qt_functions.prf:

/usr/share/qt4/mkspecs/features/qt_config.prf:

/usr/share/qt4/mkspecs/features/exclusive_builds.prf:

/usr/share/qt4/mkspecs/features/default_pre.prf:

/usr/share/qt4/mkspecs/features/release.prf:

/usr/share/qt4/mkspecs/features/default_post.prf:

/usr/share/qt4/mkspecs/features/warn_on.prf:

/usr/share/qt4/mkspecs/features/qt.prf:

/usr/share/qt4/mkspecs/features/unix/thread.prf:

/usr/share/qt4/mkspecs/features/moc.prf:

/usr/share/qt4/mkspecs/features/resources.prf:

/usr/share/qt4/mkspecs/features/uic.prf:

/usr/share/qt4/mkspecs/features/yacc.prf:

/usr/share/qt4/mkspecs/features/lex.prf:

/usr/share/qt4/mkspecs/features/include_source_dir.prf:

/usr/lib/libQtGui.prl:

/usr/lib/libQtCore.prl:

qmake: FORCE

@$(QMAKE) -unix -o Makefile testqt.pro

dist:

@$(CHK_DIR_EXISTS) .tmp/testqt1.0.0 || $(MKDIR) .tmp/testqt1.0.0

$(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/testqt1.0.0/ && $(COPY_FILE) --parents socklib.h .tmp/testqt1.0.0/ && $(COPY_FILE) --parents main.cpp .tmp/testqt1.0.0/ && (cd `dirname .tmp/testqt1.0.0` && $(TAR) testqt1.0.0.tar testqt1.0.0 && $(COMPRESS) testqt1.0.0.tar) && $(MOVE) `dirname .tmp/testqt1.0.0`/testqt1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/testqt1.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:

compiler_moc_header_clean:

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:

compiler_uic_make_all:

compiler_uic_clean:

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:

####### Compile

main.o: main.cpp socklib.h

$(CXX) -c -L../lib -lsock $(CXXFLAGS) $(INCPATH) -o main.o main.cpp

####### Install

install: FORCE

uninstall: FORCE

FORCE:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个问题的意思是:在Linux下如何生成动态库Qt库。 回答是:在Linux系统中,可以使用Qt构建系统(qmake)来生成静态库和动态库。在.pro文件中使用以下语句来生成动态库: template=lib target.path=/usr/local/lib target.name=MyLib CONFIG += shared库名称为MyLib,它将被安装到/usr/local/lib目录下。 ### 回答2: 在Linux操作系统下,我们可以通过使用Qt库来生成动态库动态库是一种链接到可执行二进制文件中的代码库,与静态库不同的是,动态库只有在运行时才会被加载,而不是在编译时。这样可以有效地降低可执行文件的大小,并且允许多个应用程序共享同一个库。Qt库提供了一些工具和命令,用于从一个应用程序项目构建动态库。 以下是在Linux系统中生成动态库的步骤: 步骤1:创建一个Qt库工程项目 在Qt Creator中,选择“File”->“New File or Project”->“Library”->选择“C++ Library”->“Choose”->填写项目名称、路径和描述信息等,然后单击“Next”。选择“Dynamic Library”并保留默认选项,然后再次单击“Next”以设置库选项。 步骤2:设计和实现代码 在Qt库工程项目中设计和实现代码,将需要导出的类和函数添加到头文件中。在该文件头中使用Q_DECL_EXPORT宏修饰这些类和函数。这将确保这些类和函数将作为库的一部分被正确导出。 步骤3:编译库 在Qt Creator中单击“Build”以编译库。在构建过程中,Qt Creator将生成一个.so文件(用于Linux)或.dll文件(用于Windows)。 步骤4:使用库 在使用库的代码中,使用#include指令包含库头文件,然后使用库中导出的类和函数。 总之,通过以上步骤,我们可以在Linux操作系统中使用Qt创建动态库。这样可以使我们的程序变得更加灵活,增强程序的可复用性。 ### 回答3: 在Linux操作系统下,Qt生成动态库的方法如下: 1. 编写Qt动态库代码 首先,需要编写Qt动态库代码。通常我们可以用Qt Creator创建C++项目,选择动态库类型,在新建的项目中编写动态库的代码。在编写代码的时候,需要使用Qt的相关库函数。 2. 配置项目的.pro文件 在Qt Creator中打开项目的.pro文件,进行配置,使其生成动态库。具体配置如下: TEMPLATE = lib # 指定项目类型为动态库 QT += core gui # 添加需要用到的Qt库函数 TARGET = MyLib # 指定生成文件名 SOURCES += MyLib.cpp # 添加源代码文件 此外,还需要在.pro文件中添加以下配置,用于指定生成目标是一个动态库: CONFIG += shared DEFINES += MYLIB_LIBRARY # 定义变量,用于在生成的动态库中引用 3. 编译和生成动态库Qt Creator中,选择菜单“Build”-->“Build All”,编译项目。编译成功后,在项目的构建目录下,生成文件名为libMyLib.so的动态库文件。 4. 在其他项目中使用动态库 在其他Qt项目中使用生成的动态库,只需要在.pro文件中添加以下配置: LIBS += -L/path/to/lib -lMyLib 其中,-L指定动态库文件所在的目录,-l指定动态库的名称。这样,在进行编译和链接时,就可以正确地引用动态库函数了。 总结: Qt生成动态库的过程比较简单,只需要编写动态库代码和配置.pro文件即可。生成的动态库可以在其他Qt项目中直接使用,方便快捷。使用动态库的好处是可以将代码模块化,提高代码的复用性和维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值