[目次] (https://qiita.com/Yutaka_Aoki/items/9d38ea98406f4096435b)
Inside Wine; DLL と共有ライブラリの関係
WINE の DLL に関して
本当に WINE によって実装されている dll の場合、例えば、user32.dll の場合なら、
user32.dll.so
などが本体。中身は、Linux が直接理解できる「共有ライブラリ」の形式になっている。
他に、user32.dll.fake なるものがある。これは、Win32 の PE 形式の DLL を模倣したもので、基本的に中身は偽者であるハズ。ただし、Win32 や アプリ自体が、このファイルを読んで何かやることがある場合には、偽者であっても、PE 形式のそれらしきファイルが存在している事が必要となる可能性がある。
WINE 公式で、「native」な、DLL とされるものは、Windows OS にとっての native という意味である。Linux にとっては、*.dll.so の方が native である。
WINEDLLPATH
user32.dll.so などが探される場所として、環境変数 WINEDLLPATH が参照される。ただし、本家から DL したままだと、検索の優先順位に問題があるため、修正しないと上手く行かない :
[WINEDLLPATHの不具合] (https://qiita.com/Yutaka_Aoki/items/3b61104197b22e3ccd1a)
libwine.so.1.0
"~/wine/libs/wine"
libwine.so.1.0 # ELF 形式の共有ライブラリ, loader など。
libwine.so.1 -> libwine.so.1.0
libwine.so -> libwine.so.1.0
本体は、libwine.so.1.0 であるが、WINE 起動時に実際に探されるファイル名は、libwine.so.1 らしい。そのため、
$ ln libwine.dll.so.1.0 libwine.dll.so.1
の意味でのリンクが用意されている。wine は、dll.so.1.0 ではなく、dll.so.1 の方を探すのである。この性質を利用すると、dll.so の検索パスを「偽装」して、make install しないで済ますことができることがある。
aaa
あああ
aaa
あああ
aaa
あああ
aaa
あああ
aaa
あああ
aaa
あああ
aaa
あああ
aaa
あああ
aaa
あああ
aaa
あああ
aaa
あああ
aaa
あああ
aaa
あああ
aaa
あああ
aaa
あああ
aaa
あああ
aaa
あああ
aaa
あああ
aaa
あああ
aaa
あああ