我正在维护一个也可以为Cygwin编译的多平台项目。我想为4种不同的" cygwin-ish"提供库和二进制文件。目标
提供所有这四种语言的Cygwin约定是什么?
这有两个部分,二进制,让我们称之为" runner"和库("库"),这是一个可动态加载的共享库,一个DLL。
用户将使用交叉编译器或本机编译器为其中一个目标构建.dll
。 (S)他将使用跑步者,其中包括加载用户提供的DLL和库。显然,这三者的目标都需要匹配。
二进制文件通常从/usr/bin
或/usr/local/bin
运行,在DLL平台上,动态库将从同一位置或路径中的目录加载。由于用户还将DLL与库链接,因此需要liblibrary.dll.a
,通常存储在/usr/lib
或/usr/local/lib
。
我可以看到两种主要策略
策略1会导致/usr/bin/runner-32-cygwin
等,而库和DLL将会出现类似的命名。复杂性包括用户需要理解命名,运行"非自然"命名二进制文件和不同的.dll.a
:s需要引用/指向不同的DLL:s。
策略2会导致链接和运行时路径的复杂性,包括/usr/bin-32-cygwin
等路径或其他路径。
有处理这个问题的惯例或传统智慧吗?我也很欣赏有关此事的任何其他想法和/或想法,或对我的假设进行更正。
答案 0 :(得分:0)
策略#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
与 https://cygwin.com/packages/x86_64/mingw64-i686-bzip2/mingw64-i686-bzip2-1.0.6-4
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
和https://cygwin.com/packages/x86_64/libbz2-devel/libbz2-devel-1.0.6-2
2013-03-07 02:54 65043 usr/bin/cygbz2-1.dll