Dll 多目标库命名/定位的Cygwin约定

Dll 多目标库命名/定位的Cygwin约定,dll,cygwin,shared-libraries,libraries,naming,Dll,Cygwin,Shared Libraries,Libraries,Naming,我正在维护一个为Cygwin编译的多平台项目。我想为4个不同的“cygwin-ish”目标提供库和二进制文件 32位cygwin 32位mingw 64位cygwin 64位mingw Cygwin公约将如何提供这四个方面 这有两个部分,二进制文件,我们称之为“runner”,以及库(“库”),它是一个动态加载的共享库,一个DLL 用户将使用交叉编译器或本机编译器为其中一个目标构建.dll。(S) 他将使用runner,它将加载用户提供的DLL和库。显然,三者的目标都需要匹配 二进制文件通常

我正在维护一个为Cygwin编译的多平台项目。我想为4个不同的“cygwin-ish”目标提供库和二进制文件

  • 32位cygwin
  • 32位mingw
  • 64位cygwin
  • 64位mingw
Cygwin公约将如何提供这四个方面

这有两个部分,二进制文件,我们称之为“runner”,以及库(“库”),它是一个动态加载的共享库,一个DLL

用户将使用交叉编译器或本机编译器为其中一个目标构建
.dll
。(S) 他将使用runner,它将加载用户提供的DLL和库。显然,三者的目标都需要匹配

二进制文件通常从
/usr/bin
/usr/local/bin
运行,当然,在DLL平台上,动态库将从同一位置或路径中的目录加载。由于用户还将根据库链接DLL,因此需要
libliblibrary.DLL.a
,通常存储在
/usr/lib
/usr/local/lib

我可以看到两个主要的策略

  • 提供名称不同但位置相同的库和二进制文件
  • 提供名称相同但位置不同的库和二进制文件
  • 策略1将导致
    /usr/bin/runner-32-cygwin
    等,库和DLL:s将使用类似的命名。复杂性包括用户需要了解命名、运行“非自然”命名二进制文件和不同的
    .dll。a
    :s需要引用/指向不同的dll:s

    策略2将导致链接和运行时路径的复杂性,包括
    /usr/bin-32-cygwin
    等路径

    有没有一个惯例或传统的智慧来处理这个问题?我还希望您能就此事提出任何其他想法和/或想法,或对我的假设进行更正。

    战略#2

    32位和64位是分开的

    2013-11-26 22:42           0 usr/i686-w64-mingw32/sys-root/mingw/bin/
    2013-11-26 22:42       66560 usr/i686-w64-mingw32/sys-root/mingw/bin/libbz2-1.dll
    2013-11-26 22:42           0 usr/i686-w64-mingw32/sys-root/mingw/include/
    2013-11-26 22:42        6231 usr/i686-w64-mingw32/sys-root/mingw/include/bzlib.h
    2013-11-26 22:42           0 usr/i686-w64-mingw32/sys-root/mingw/lib/
    2013-11-26 22:42       63176 usr/i686-w64-mingw32/sys-root/mingw/lib/libbz2.a
    2013-11-26 22:42       23040 usr/i686-w64-mingw32/sys-root/mingw/lib/libbz2.dll.a
    
    2013-03-07 02:54           0 usr/include/
    2013-03-07 02:54        6245 usr/include/bzlib.h
    2013-03-07 02:54           0 usr/lib/
    2013-03-07 02:54      271704 usr/lib/libbz2.a
    2013-03-07 02:54       22586 usr/lib/libbz2.dll.a
    
    2013-03-07 02:54       65043 usr/bin/cygbz2-1.dll