Winelib and static-build
Alan Nisota
alannisota at gmail.com
Fri Oct 24 11:13:54 CDT 2008
Dan Kegel wrote:
> Alan Nisota wrote:
>
>>> I have a project (http://code.google.com/p/coreavc-for-linux) which is a
>>> linux executable which provides access to Windows DirectShow filters
>>>
>>> The problem is that I normally provide a static binary so that users on
>>> x86-64 can install it easily without needing a 32bit build environment...
>>>
>> I expect to need to depend on the wine package anyway.
>> What I was looking for is a way to supply an executable
>> that will run on any distro that has wine installed already.
>> However, as I said, it must be a winelib app, and I
>> need to statically compile in libc, and librt to make
>> a build that 'just works' on x86-64 distros.
>>
>
> How about making the win32 part of your app a real
> win32 .exe that just runs with Wine, and uses
> commandline / environment, pipes, or sockets
> (or maybe even shared memory) to communicate with the native part?
>
> The problem with shipping winelib apps is that
> IIRC winelib is not a stable ABI. win32, however, is.
>
Well, the entire app could easily be a Win32 executable, except that I
need to be able to communicate with a linux app via shared memory. The
app is basically just an interface to a directShow filter, and that
filter does a lot of work on large memory ranges (normal input per/frame
is <100kb, output is ~4MB at 1920x1280) with this communication
happening up to 60 times per second. There is a measurable performance
hit to making copies of that memory; I measured it at about 5% before
switching to the shared memory implementation, and one of the main
reasons that people want to use this app is to squeeze enough
performance out of their machine so they can watch their HD BluRay (or
whatever) videos on hardware that is not up to the task with ffmpeg.
So I'd be happy to have a win32 app that can talk to linux via shared
memory (I also need semaphores, but that could likely be handled via
socket communication) but I don't think this is possible, and so I seem
to be stick with either using winelib or continuing to use my hacked
'loader' implementation.
More information about the wine-devel
mailing list