LINUX.ORG.RU

Отличие исполняемых wine и wine64

 


0

1

В последнее время по работе плотно использую WINE и заметил, что в wine/bin/ есть 2 исполняемых файла, wine и wine64. По большей части они работают для меня одинаково, но в некоторых приложениях(например msvsmon) и на некоторых дистрибутивах(RedOS) при запуске через wine работает, а wine64 нет.

Возник вопрос, а в чем между ними разница? Пробовал гуглить, но все ответы что находил, касались либо сборок вайна x86 и x64, либо префиксов вайна. А меня интересует именно разница этих бинарников в x86_64 сборке вайна. И что я теряю не используя wine64?(это мне важно, т.к. софт очень прожорливый по памяти)

PS: Есть подозрение, что wine64 это та версия, что переводит вызовы x86 в x64(и которая сырая), но я не уверен что правильно понимаю.

Перемещено hobbit из general

★★★★★

Последнее исправление: Loki13 (всего исправлений: 1)

а в чем между ними разница?

Так навскидку.

bash-5.1$ ldd /usr/bin/wine64
        linux-vdso.so.1 (0x00007ffc5d3fc000)
        libc.so.6 => /lib/libc.so.6 (0x00007f27cc19b000)
        /lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x00007f27cc39e000)
bash-5.1$ ldd /usr/bin/wine
        linux-gate.so.1 (0xf7f45000)
        libc.so.6 => /lib32/libc.so.6 (0xf7cf9000)
        /lib32/ld-linux.so.2 => /lib/ld-linux.so.2 (0xf7f47000)
bash-5.1$ 
То есть /usr/bin/wine - это 32-битное приложение, а /usr/bin/wine64 - 64-битное. Соотвественно 32-битное приложение не может есть больше ограничения для 32-бит и не может запускать 64-битные приложения. И так далее.

vbcnthfkmnth123 ★★★★★
()
Последнее исправление: vbcnthfkmnth123 (всего исправлений: 1)
Ответ на: комментарий от vbcnthfkmnth123

То есть /usr/bin/wine - это 32-битное приложение, а /usr/bin/wine64 - 64-битное. Соотвественно 32-битное приложение не может есть больше ограничения для 32-бит и не может запускать 64-битные приложения. И так далее.

Вот это то меня и смущает, что он запускает 64х битный виндовый экзешник. В том что он 64х битный, я уверен, я сам его собираю в VS.

Loki13 ★★★★★
() автор топика
Ответ на: комментарий от vel

Тогда выбор x86_64 очевиден.

Так это я понимаю, у меня и сборка вайна x86_64 и префикс тоже x64. А вот сами бинарники, большинство софта запускают оба, но вот с некоторым есть проблемы.

Loki13 ★★★★★
() автор топика
Ответ на: комментарий от vbcnthfkmnth123
alexv@home ~> ldd ~/lutris-GE-Proton8-10-x86_64/bin/wine64                                                                                                                                                                    (base) 
	linux-vdso.so.1 (0x00007ffde37a9000)
	libpthread.so.0 => /usr/lib64/libpthread.so.0 (0x00007fb1976f3000)
	libdl.so.2 => /usr/lib64/libdl.so.2 (0x00007fb1976ee000)
	libc.so.6 => /usr/lib64/libc.so.6 (0x00007fb197515000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fb197747000)
alexv@home ~> ldd ~/lutris-GE-Proton8-10-x86_64/bin/wine                                                                                                                                                                      (base) 
	libpthread.so.0 => /usr/lib/libpthread.so.0 (0xf7eaa000)
	libdl.so.2 => /usr/lib/libdl.so.2 (0xf7ea5000)
	libc.so.6 => /usr/lib/libc.so.6 (0xf7c00000)
	/lib/ld-linux.so.2 (0xf7efe000)

Слинковано так же, и да, я вижу разницу. Но префикс вайна 64х битный точно и приложение, которое я запускаю, то же x64 собрано. Вот насчет потребления памяти, сейчас попробую проверить.

Loki13 ★★★★★
() автор топика
Ответ на: комментарий от hobbit

Если без имён и лиц, то

Куча софта инженерного, который используют многие гос.конторы. В связи с курсом на импортозамещение, необходимо переводить на линукс. Переписывать накопившееся за 20+ лет легаси(WinAPI, MFC и прочие демоны) в какие-либо обозримые сроки - не реально. Так что «по бырому» обеспечиваем стабильную и корректную работу всего этого в вайне(пользователь даже знать ни про какой вайн не будет, все эти кишки внутри).

Loki13 ★★★★★
() автор топика
Ответ на: комментарий от hobbit

Ну да, исходники все в наличии и частенько правятся для совместимости с вайном. Но легаси настолько суровое(и писалось десятилетия), что переписать нереально(в обозримые сроки). А версия под линукс нужна ещё вчера.

Loki13 ★★★★★
() автор топика
Ответ на: комментарий от Loki13

Посмотри в описании процесса - какой там реально бинарник используется и какая нативная разрядность и процесса. А то может он распознал что оно 64-битное и перенаправил в wine64.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Да, об этом я не подумал(точнее подумал, но очень вскользь), что wine может быть умным. А как в этих наших линуксах подробную информацию о процессе получить? В top даже не пишет, что он через wine запущен, прямо имя ехешника.

Loki13 ★★★★★
() автор топика
Ответ на: комментарий от hobbit

Смотря кем и где работать. Главная причина: аналоговнет-софт укоренившийся в рабочих процессах. Особенно если он древнючий, «консольный» или вообще самодельный.

Из встреченного: winbox, parus, materialize. Достойны отдельного упоминания всевозможные генераторы ландшафта (terragen, world machine) - эта сволочь способна выжрать 100+ Гб ОЗУ/Свопа.

Я например вот ниразу не 3д-артист, а у меня десятка два всяких виверов-редакторов-конвертеров для нужных мне закрытых ресурных форматов.

О, кстати, еще одна мастейвная штука (тоже шындовс-онли), нужная на любом ПК с exe файлами - https://ntcore.com/?page_id=371

hargard ★★
()
Последнее исправление: hargard (всего исправлений: 1)

Один из них 32-битный, другой 64-битный. Но в нормальных условиях разницы никакой нет, какой из них использовать, у тебя в обоих случаях создатся одинаковый префикс и в обоих случаях ты сможешь запускать как 64-битные, так и 32-битные приложения.

Разница будет, если в дистрибутиве не установлен 32-битный glibc, тогда 32-битный бинарник с именем wine просто не будет работать, ну и 32-битные приложения не будут работать.

И что я теряю не используя wine64?

Ничего.

Есть подозрение, что wine64 это та версия, что переводит вызовы x86 в x64(и которая сырая), но я не уверен что правильно понимаю.

Нет, wow64 включается иначе, просто вызова wine64 недостаточно.

Kron4ek ★★★★★
()
Последнее исправление: Kron4ek (всего исправлений: 3)
Ответ на: комментарий от Kron4ek

Разница будет, если в дистрибутиве не установлен 32-битный glibc, тогда 32-битный бинарник с именем wine просто не будет работать, ну и 32-битные приложения не будут работать.

У меня получилось, что при запуске удаленного отладчика(msvsmon) с помощью wine64, он прямо на старте падает с критической ошибкой, а при старте с помощью wine - нормально работает. И происходит такое только на REDOS, на Альте работают оба варианта. И да, запускаю в обоих случаях не системным вайном, а сборкой lutris-GE-Proton8-10-x86_64.

Меня такое поведение очень смутило. Поэтому и этот тред.

Loki13 ★★★★★
() автор топика
Ответ на: комментарий от Loki13

Фиг его знает что там в RedOS накручено, но вообще разницы быть не должно. Ты можешь попробовать запустить какой-нибудь 32-битный и 64-битный exe’шник обоими бинарниками, они должны в обоих случаях запуститься и работать одинаково.

Kron4ek ★★★★★
()

Сам wine только лончер. Вероятно, он потом exec'ается в нужный процесс.
Можешь узнать какой бинарник на самом деле крутит процесс по симлинку /proc/$PID/exe. Скорее всего этот будет какой-нибудь wine64-preloader
Разное поведение может быть вызвано глючной сборкой wine (например wine32 не знает про наличие 64битного preloader

mittorn ★★★★★
()
Ответ на: комментарий от mittorn

Разное поведение может быть вызвано глючной сборкой wine (например wine32 не знает про наличие 64битного preloader

В том и дело, что сборку я использую, которую приношу собой. А на разных дистрибутивах, отличается результат запуска.

PS: Столкнулся с тем, что в Убунте, если запускать _свой_ вайн, как wine, то он пишет «File not found», а wine64 запускается. Но тут мои подозрения пали на настройки apparmor, т.к. только в убунте так.

Loki13 ★★★★★
() автор топика
Ответ на: комментарий от mittorn

У меня не запускается некоторый софт через wine64 на REDOS, который запускается через него на Альте. Но при этом начинает запускаться через wine. Сам WINE запускается и тот и тот. Вот и возник вопрос, в чем может быть между ними разница(для софта вендового, который под ними выполняется).

А насчет /proc/$PID/exe спасибо. Обязательно посмотрю.

Loki13 ★★★★★
() автор топика
Последнее исправление: Loki13 (всего исправлений: 1)