如何避免在.so文件名中包含版本号

Eti*_*tel 14 linux qt qmake shared-libraries

我正在尝试使用qmake在Linux上构建动态库.这是我的.pro文件:

TEMPLATE = lib
TARGET = sqxUiBase
QT += core gui   
CONFIG += dll    
INCLUDEPATH += ../../public/include   
DEPENDPATH += .
UI_DIR += ../GeneratedFiles    
RCC_DIR += ../GeneratedFiles   
CONFIG(release, debug|release) {
    DESTDIR = ../lib/release
    LIBS += -L"../lib/release"
    MOC_DIR += ../GeneratedFiles/release
    OBJECTS_DIR += release
} else {    
    DESTDIR = ../lib/debug
    LIBS += -L"../lib/debug"
    MOC_DIR += ../GeneratedFiles/debug
    OBJECTS_DIR += debug
} 

include(sqxUiBase.pri)
Run Code Online (Sandbox Code Playgroud)

sqxUiBase.pri文件包含需要构建的文件列表.

现在,问题是无论我做什么,结果文件总是被命名sqxUiBase.so.1.0.0,有一堆符号链接(sqxUiBase.so,sqxUiBase.so.1sqxUiBase.so.1.0)指向它.我怎样才能使它只有一个sqxUiBase.so文件而没有链接?

Fre*_*red 18

你正在寻找的是制作一个plugin.

添加CONFIG += plugin到项目文件中,qmake将生成一个构建libFoo.so文件的Makefile ,没有编号的链接

  • 作为附加选项,您可以在.pro文件中使用"VERSION ="(不带引号)指定空的版本号.我只能证明它在Windows下工作. (3认同)

小智 10

在查看qmake源代码后,我找到CONFIG += unversioned_libname了nix和CONFIG += skip_target_version_extwindows.

  • 您还需要`CONFIG += unversioned_soname`,这样在链接时它就不会查找`foo.so.1`。 (2认同)