New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mingw ビルドが libwinpthread-1.dll を要求する。 #1070

Open
mattn opened this Issue Aug 16, 2017 · 10 comments

Comments

Projects
None yet
2 participants
@mattn
Member

mattn commented Aug 16, 2017

http://lingr.com/room/vim/archives/2017/08/16#message-24216857

libwinpthread-1.dll が必要な件ですが、
https://bitbucket.org/k_takata/vim-ktakata-mq/src/e72851da1a90ecdf07f64c10eab1a85a05519eee/mingw-link-libgcc_eh-explicitly.patch?at=default&fileviewer=file-view-default
先ほどのパッチを当てて、STATIC_STDCPLUS=yes を指定してビルドすれば余計なdllは不要になります。

@k-takata k-takata changed the title from mingw ビルドが ibwinpthread-1.dll を要求する。 to mingw ビルドが libwinpthread-1.dll を要求する。 Aug 16, 2017

@k-takata

This comment has been minimized.

Show comment
Hide comment
@k-takata

k-takata Aug 16, 2017

Member

これですが、MSYS2 MinGW-w64 の gcc が ver.6 だか 7 だかにバージョンアップして以降、このパッチを当てないと libwinpthread-1.dll が必要になってしまいました。
ただ、このパッチを当てると、TDM-GCC-64 でビルドできなくなってしまうと思われます。というのは、TDM-GCC-64 には libgcc_eh が無いようなので。

ということで、複数バージョンの MinGW-w64 でビルドできない問題が解決しない限り、このパッチを vim_dev に出す予定はありません。

Member

k-takata commented Aug 16, 2017

これですが、MSYS2 MinGW-w64 の gcc が ver.6 だか 7 だかにバージョンアップして以降、このパッチを当てないと libwinpthread-1.dll が必要になってしまいました。
ただ、このパッチを当てると、TDM-GCC-64 でビルドできなくなってしまうと思われます。というのは、TDM-GCC-64 には libgcc_eh が無いようなので。

ということで、複数バージョンの MinGW-w64 でビルドできない問題が解決しない限り、このパッチを vim_dev に出す予定はありません。

@mattn

This comment has been minimized.

Show comment
Hide comment
@mattn

mattn Aug 16, 2017

Member

TDM-GCC-64 には libgcc_eh が無いようなので。

ふぉwww

ちなみにですが、mingw32-make の引数で変えれるようにも出来ないですっけ?

Member

mattn commented Aug 16, 2017

TDM-GCC-64 には libgcc_eh が無いようなので。

ふぉwww

ちなみにですが、mingw32-make の引数で変えれるようにも出来ないですっけ?

@mattn

This comment has been minimized.

Show comment
Hide comment
@mattn

mattn Aug 16, 2017

Member

まぁ出来なくないけどニッチすぎるってのがありますね。

Member

mattn commented Aug 16, 2017

まぁ出来なくないけどニッチすぎるってのがありますね。

@k-takata

This comment has been minimized.

Show comment
Hide comment
@k-takata

k-takata Aug 16, 2017

Member

ちなみにですが、mingw32-make の引数で変えれるようにも出来ないですっけ?

もちろんできなくはないですが、そこまでするの?ということですね。あと、するならオプション名はどうするのとか。

libgcc_eh の有無が、gccのバージョンの違いによるものなのか、例外処理の方式の違い(SJLJ, Dwarf2, SEH)によるものなのかは、把握していません。

Member

k-takata commented Aug 16, 2017

ちなみにですが、mingw32-make の引数で変えれるようにも出来ないですっけ?

もちろんできなくはないですが、そこまでするの?ということですね。あと、するならオプション名はどうするのとか。

libgcc_eh の有無が、gccのバージョンの違いによるものなのか、例外処理の方式の違い(SJLJ, Dwarf2, SEH)によるものなのかは、把握していません。

@k-takata

This comment has been minimized.

Show comment
Hide comment
@k-takata
Member

k-takata commented Apr 25, 2018

Related: vim/vim#2827

@k-takata

This comment has been minimized.

Show comment
Hide comment
@k-takata

k-takata Sep 24, 2018

Member

MXE (M cross environment) で使われている MinGW-w64 GCC 5.5.0 には libgcc_eh があった。
MSYS2 MinGW-w64 の GCC 7.3.0 にもある。
Cygwin MinGW GCC 4.7.3 にもある。
Cygwin MinGW-w64 GCC 6.4.0 にもある。
なぜか TDM-GCC-64 の GCC 5.1.0 にはない。

しかし、-lgcc_eh の代わりに -static-libgcc などとしても効果がないのが残念。

Member

k-takata commented Sep 24, 2018

MXE (M cross environment) で使われている MinGW-w64 GCC 5.5.0 には libgcc_eh があった。
MSYS2 MinGW-w64 の GCC 7.3.0 にもある。
Cygwin MinGW GCC 4.7.3 にもある。
Cygwin MinGW-w64 GCC 6.4.0 にもある。
なぜか TDM-GCC-64 の GCC 5.1.0 にはない。

しかし、-lgcc_eh の代わりに -static-libgcc などとしても効果がないのが残念。

@k-takata

This comment has been minimized.

Show comment
Hide comment
@k-takata

k-takata Sep 24, 2018

Member

GCCのバージョンとか、例外処理がSJLJかDW2かというのは関係なく、なぜかTDM-GCC-64だけ libgcc_eh がない。
あっ、TDM-GCC-64を捨てれば解決か!w

Member

k-takata commented Sep 24, 2018

GCCのバージョンとか、例外処理がSJLJかDW2かというのは関係なく、なぜかTDM-GCC-64だけ libgcc_eh がない。
あっ、TDM-GCC-64を捨てれば解決か!w

@k-takata

This comment has been minimized.

Show comment
Hide comment
@k-takata

k-takata Sep 24, 2018

Member

これですが、MSYS2 MinGW-w64 の gcc が ver.6 だか 7 だかにバージョンアップして以降、このパッチを当てないと libwinpthread-1.dll が必要になってしまいました。

そもそもこれの原因は GCC の Thread model が win32 から posix に変わったことだったりするだろうか?(当時のバイナリが手元にないため不明。CygwinのMinGW 4.7.3と、MXEの5.5.0はwin32だが、CygwinのMinGW-w64 6.4.0とTDMの5.1.0とMSYS2の7.3.0はposix。)

Member

k-takata commented Sep 24, 2018

これですが、MSYS2 MinGW-w64 の gcc が ver.6 だか 7 だかにバージョンアップして以降、このパッチを当てないと libwinpthread-1.dll が必要になってしまいました。

そもそもこれの原因は GCC の Thread model が win32 から posix に変わったことだったりするだろうか?(当時のバイナリが手元にないため不明。CygwinのMinGW 4.7.3と、MXEの5.5.0はwin32だが、CygwinのMinGW-w64 6.4.0とTDMの5.1.0とMSYS2の7.3.0はposix。)

@k-takata

This comment has been minimized.

Show comment
Hide comment
@k-takata

k-takata Sep 24, 2018

Member

32bitターゲットのMinGWの比較

Environment GCC Ver. libgcc_eh Thread Exception
Cygwin MinGW 4.7.3 Yes win32 Dwarf2
TDM-GCC-64 MinGW-w64 5.1.0 No posix SJLJ(?)
MXE MinGW-w64 5.5.0 Yes win32 SJLJ
Cygwin MinGW-w64 6.4.0 Yes posix SJLJ
MSYS2 MinGW-w64 7.3.0 Yes posix Dwarf2
Member

k-takata commented Sep 24, 2018

32bitターゲットのMinGWの比較

Environment GCC Ver. libgcc_eh Thread Exception
Cygwin MinGW 4.7.3 Yes win32 Dwarf2
TDM-GCC-64 MinGW-w64 5.1.0 No posix SJLJ(?)
MXE MinGW-w64 5.5.0 Yes win32 SJLJ
Cygwin MinGW-w64 6.4.0 Yes posix SJLJ
MSYS2 MinGW-w64 7.3.0 Yes posix Dwarf2
@k-takata

This comment has been minimized.

Show comment
Hide comment
@k-takata
Member

k-takata commented Sep 24, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment