исполнение Windows промышленных проектов под Wine

Выполнение Windows приложений (.exe) без виртуальных машин

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: исполнение промышленных проектов под Wine

Непрочитанное сообщение Olej » 22 мар 2013, 13:40

Виктория писал(а):А зачем нужно была Visual Studio? Можно было провести сравнение, используя mingw и boost. Или это нужно для чистоты эксперимента?
Возвращаясь к этому вопросу:
- меня интересовало не гипотетическое использование Wine (это я и так знаю ... да и с этим вопросом лучше - к игрунам ;-) )...
- а те новые свойства (и даже новые качества), которые обретёт в Wine реальный промышленный проект (а ко мне и обратились с ревизией существующего проекта);
- а реальные промышленные проекты (крупные) если делаются для Windows, то делаются в MS Visual Studio (во всех прочих IDE и tools делаются студенческие курсовые проекты ;-) ).

Вот поэтому такой выбор.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: исполнение промышленных проектов под Wine

Непрочитанное сообщение Olej » 22 мар 2013, 13:46

Olej писал(а):10. После этого успешно собирается и проект example2 (для проверки) и проект randwr (перенесено из Linux, из-за которого всё и закрутилось).
В принципе (по итогу), всё это не так много работы ... на всё, начиная с поиска что и откуда скачать, и закончив сборкой Linux-кода под MS Visual Studio, у меня ушёл 1 день работы ... вчера, к глубокой ночи :-( , проект randwr собрался. Это при том, что я очень давно не был в Windows и не ориентируюсь в его инструментах ... хотя очень хорошо представляю чего я хочу получить ;-) .

Так что во всём этом нет ничего "военного", и всяк желающий может повторить такой вот перенос проекта randwr, который вложен в сообщение пару дней ранее.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: исполнение Windows промышленных проектов под Wine

Непрочитанное сообщение Olej » 22 мар 2013, 21:04

Теперь, да ещё слегка (не- ;-) )разобравшись с локализациями Windows можно собрать переносимое приложение randwr, которое можно собрать хоть в Linux, хоть в Windows:

Код: Выделить всё

C:\Documents and Settings\olej\Мои документы\Visual Studio 2010\Projects\randwr\Debug>randwr.exe
Запуск:  randwr.exe файл [число записей] [размер блока записи[{K,M}]]
А Windows-ный randwr.exe можно запускать в Linux под Wine и т.д.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: исполнение Windows промышленных проектов под Wine

Непрочитанное сообщение Olej » 22 мар 2013, 21:22

Olej писал(а):А Windows-ный randwr.exe можно запускать в Linux под Wine и т.д.
Примерно вот так :lol: :lol: :lol: :

Код: Выделить всё

bash-4.2$ dd if=/dev/zero of=./xxx2 bs=1M count=20
20+0 записей считано
20+0 записей написано
 скопировано 20971520 байт (21 MB), 0,04983 c, 421 MB/c

Код: Выделить всё

bash-4.2$ ./randwr ./xxx2 1000 1k
длина файла 20971520, блоков в файле 20480
продолжительность выполнения случайной записи:
 0.004766s wall, 0.000000s user + 0.000000s system = 0.000000s CPU (n/a%)
в случайные позиции файла записано 1000 блоков длиной 1024 байт каждый
из 20480 блоков файла модифицировано 980 блоков
длина файла после записи: 20971520

Код: Выделить всё

bash-4.2$ wine randwr .\xxx2 1000 1k
fixme:heap:HeapSetInformation (nil) 1 (nil) 0
fixme:msvcp90:_Locinfo__Locinfo_ctor_cat_cstr (0x33f2d8 63 ) semi-stub
wine: Unhandled page fault on read access to 0x0000000f at address 0x4010d0 (thread 0009), starting debugger...
:cry:

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: исполнение Windows промышленных проектов под Wine

Непрочитанное сообщение Olej » 23 мар 2013, 00:36

Olej писал(а):можно собрать переносимое приложение randwr, которое можно собрать хоть в Linux, хоть в Windows
По крайней мере, Windows приложение переносимое (текстуально неизменное компилируется точно то же, что и в Linux), и результат выполнения подобен тому (по форме), что и показанный под Linux:

Код: Выделить всё

C:\Documents and Settings\olej\Мои документы\Visual Studio 2010\Projects\randwr\Release>randwr.exe
data 100000 10k
длина файла 2097156, блоков в файле 204
продолжительность выполнения случайной записи:
 2.409671s wall, 1.968750s user + 0.437500s system = 2.406250s CPU (99.9%)
в случайные позиции файла записано 100000 блоков длиной 10240 байт каждый
из 204 блоков файла модифицировано 204 блоков
длина файла после записи: 2097156
С той разницей, что каждое приложение работает со своей, совершенно разными, файловой системой и т.д.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: исполнение Windows промышленных проектов под Wine

Непрочитанное сообщение Olej » 23 мар 2013, 02:30

Olej писал(а):

Код: Выделить всё

bash-4.2$ wine randwr .\xxx2 1000 1k
fixme:heap:HeapSetInformation (nil) 1 (nil) 0
fixme:msvcp90:_Locinfo__Locinfo_ctor_cat_cstr (0x33f2d8 63 ) semi-stub
wine: Unhandled page fault on read access to 0x0000000f at address 0x4010d0 (thread 0009), starting debugger...
:cry:
Для того, чтобы запустить созданные *.exe приложения - в Wine не хватает библиотек MS VC 10.

Доставить их можно так:

- берём библиотеки из VC:

Код: Выделить всё

bash-4.2$ ls -l msvc*
-rw-r--r-- 1 olej olej  743248 марта 23 00:01 msvcp100d.dll
-rw-r--r-- 1 olej olej  421200 марта 23 00:02 msvcp100.dll
-rw-r--r-- 1 olej olej 1498960 марта 23 00:01 msvcr100d.dll
-rw-r--r-- 1 olej olej  770384 марта 23 00:02 msvcr100.dll
- и копируем их в каталог Wine:

Код: Выделить всё

bash-4.2$ pwd
/home/olej/.wine/drive_c/windows/system32
- и в приложении Wine Configuration (winecfg) указываем, что эти библиотеки нужно взять сторонние (скопированные):
Wine_004.png
Wine_004.png (11.28 КБ) 8866 просмотров
Проверяем всё на тех же example*, которые сделаны ещё при интеграции Boost, вот оно замечательно играет под Wine:

Код: Выделить всё

bash-4.2$ wine example.exe
fixme:heap:HeapSetInformation (nil) 1 (nil) 0
1 2 3
3 6 9
fixme:console:CONSOLE_DefaultHandler Terminating process 23 on event 0

Код: Выделить всё

bash-4.2$ wine example3.exe
fixme:heap:HeapSetInformation (nil) 1 (nil) 0
Subject: Re: 123 456
123 456
fixme:console:CONSOLE_DefaultHandler Terminating process 29 on event 0
P.S. В архиве:
- библиотеки DLL для доустановки в Wine
- и *.exe приложения
- и Linux проект с Makefile сборки тех же приложений example* из неизменных кодов С++ нативно в Linux
Вложения
win32.tgz
(1.49 МБ) 605 скачиваний

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: исполнение Windows промышленных проектов под Wine

Непрочитанное сообщение Olej » 23 мар 2013, 02:33

Olej писал(а):Проверяем всё на тех же example*, которые сделаны ещё при интеграции Boost
И последний штрих - Windows приложение randwr.exe, которое попервах не пожелало крутиться под Wine:

Код: Выделить всё

bash-4.2$ wine randwr.exe xxx2  100 1K
fixme:heap:HeapSetInformation (nil) 1 (nil) 0
длина файла 20971520, блоков в файле 20480
продолжительность выполнения случайной записи:
 0.729003s wall, 0.000000s user + 0.010000s system = 0.010000s CPU (1.4%)
в случайные позиции файла записано 100 блоков длиной 1024 байт каждый
из 20480 блоков файла модифицировано 100 блоков
длина файла после записи: 20971520

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: исполнение Windows промышленных проектов под Wine

Непрочитанное сообщение Olej » 24 мар 2013, 01:02

Olej писал(а):P.S. При этом только не нужно упускать (для правильной оценки), что Wine не есть система виртуализации. Это а). механизм вызовов Win32 DLL + б). подмена системных DLL (kernel32.dll, user32.dll и мн. др.) с тем, чтобы системные вызовы Win32 API ретранслировать в системные вызовы POSIX.
Я как-то раньше даже упустил из виду - происхождение названия проекта Wine - см. Wine :
Название Wine является рекурсивным акронимом и расшифровывается «Wine Is Not an Emulator» — «Wine — не эмулятор» (имеется в виду, что Wine не является эмулятором компьютера, как, например, qemu или VirtualBox, Wine — это альтернативная реализация Windows API).

Аватара пользователя
Lepton
Писатель
Сообщения: 73
Зарегистрирован: 18 окт 2011, 20:26
Контактная информация:

Re: исполнение Windows промышленных проектов под Wine

Непрочитанное сообщение Lepton » 24 мар 2013, 12:10

Olej писал(а):
Olej писал(а):

Код: Выделить всё

bash-4.2$ wine randwr .\xxx2 1000 1k
fixme:heap:HeapSetInformation (nil) 1 (nil) 0
fixme:msvcp90:_Locinfo__Locinfo_ctor_cat_cstr (0x33f2d8 63 ) semi-stub
wine: Unhandled page fault on read access to 0x0000000f at address 0x4010d0 (thread 0009), starting debugger...
:cry:
Вреде как жалуется на отсутствие MS VC 2008 (vcrun2008).
Olej писал(а):
Olej писал(а):
Для того, чтобы запустить созданные *.exe приложения - в Wine не хватает библиотек MS VC 10.

Доставить их можно так:

- берём библиотеки из VC:

Код: Выделить всё

bash-4.2$ ls -l msvc*
-rw-r--r-- 1 olej olej  743248 марта 23 00:01 msvcp100d.dll
-rw-r--r-- 1 olej olej  421200 марта 23 00:02 msvcp100.dll
-rw-r--r-- 1 olej olej 1498960 марта 23 00:01 msvcr100d.dll
-rw-r--r-- 1 olej olej  770384 марта 23 00:02 msvcr100.dll
- и копируем их в каталог Wine:

Код: Выделить всё

bash-4.2$ pwd
/home/olej/.wine/drive_c/windows/system32
- и в приложении Wine Configuration (winecfg) указываем, что эти библиотеки нужно взять сторонние (скопированные):
Wine_004.png
А так не прокатит:

Код: Выделить всё

$ winetricks vcrun2010 
или Вы не пользуйтесь winetricks? Правда я не помню, пропишет ли этот скрипт нативность этих библиотек в настройках Wine (надо посмотреть) :-)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: исполнение Windows промышленных проектов под Wine

Непрочитанное сообщение Olej » 24 мар 2013, 12:17

Lepton писал(а): А так не прокатит:

Код: Выделить всё

$ winetricks vcrun2010 
или Вы не пользуйтесь winetricks? Правда я не помню, пропишет ли этот скрипт нативность этих библиотек в настройках Wine (надо посмотреть) :-)
Я пользовался winetricks. Хорошая выдумка...
(правда, я как-то с помощью winetricks что-то доустановил так, что полностью развалил выполнение Wine-ом приложений).

Но меня, в данном случае, интересовало детально: чего Wine-у не хватает? Оказалось, что 2-х родных VC DLL (соответственно х2 = 4 - отладочная + релизная версии). Библиотеки VC 10, как я понимаю, покрыли потребности в библиотеках VC 8 & VC 9.

Ответить

Вернуться в «Среды выполнения Windows-приложений»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя