2017-02-02 4 views
0

Я поддерживаю многоплатформенный проект, который также компилируется для Cygwin. Я хочу предоставить библиотеки и двоичные файлы для 4-х различных "Cygwin-МОГ" нацеленСоглашение Cygwin для именования/размещения нескольких целевых библиотек

  • 32-битный CYGWIN
  • 32-битный MingW
  • 64-битный CYGWIN
  • 64-битный MingW

Каким будет соглашение Cygwin для предоставления всех четырех из них?

Существует две части этого: двоичный, назовем его «бегуном» и библиотекой («library»), которая является динамически загружаемой общей библиотекой, DLL.

Пользователь будет строить .dll для одной из целей, используя кросс-компилятор или собственный. (S) Он будет использовать бегун, который, среди прочего, загрузит предоставленную пользователем DLL и библиотеку. Очевидно, цель для всех трех должна соответствовать.

Бинарники обычно запускаются от /usr/bin или /usr/local/bin, и на DLL-платформах динамические библиотеки будут загружаться из того же места или из каталога в пути. Поскольку пользователь также будет связывать DLL с библиотекой, требуется liblibrary.dll.a, обычно хранящийся в /usr/lib или /usr/local/lib.

Существуют две основные стратегии, которые я могу видеть

  1. предоставляют библиотеки и двоичные файлы с разными именами, но в тех же местах и,
  2. , обеспечивающие библиотеки и исполняемые файлы с одинаковыми именами, но в разных местах.

Стратегия 1 привела бы к /usr/bin/runner-32-cygwin и т. Д., А библиотеки и библиотеки DLL: с похожими именами. Сложности включают в себя то, что пользователю нужно будет понять именование, запустить «неестественные» именованные двоичные файлы и разные .dll.a: s нужно ссылаться/указывать на разные DLL: s.

Стратегия 2 приведет к сложностям в связывании и путях выполнения, включая пути, такие как /usr/bin-32-cygwin или некоторые из них.

Есть ли конвенция или общепринятая мудрость, чтобы справиться с этим? Я также хотел бы оценить любые дополнительные идеи и/или мысли по этому вопросу или поправки к моим предположениям.

ответ

0

Стратегия № 2

32 бит и 64-разрядные разделены так или иначе

См https://cygwin.com/packages/x86_64/mingw64-i686-bzip2/mingw64-i686-bzip2-1.0.6-4

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/libbz2-devel/libbz2-devel-1.0.6-2

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_1/libbz2_1-1.0.6-2

2013-03-07 02:54  65043 usr/bin/cygbz2-1.dll 
Смежные вопросы