0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Inside Wine; DLL と共有ライブラリの関係

Last updated at Posted at 2018-02-27

[目次] (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

あああ

end

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?