NTEmacs ビルドオプション検討
Table of Contents
24.4以降のビルド
事例
configureの結果
Does Emacs use -lrsvg-2? no Does Emacs use -ldbus? no Does Emacs use -lgnutls? no
Does Emacs use -lrsvg-2? yes Does Emacs use -ldbus? yes Does Emacs use -lgnutls? yes
svgの表示
svgファイルを開こうとすると、下記のメッセージが表示される。
Invalid image type `svg'
eww
eww で https://github.com/ を開こうとすると、
Contacting host: github.com:443 Opening TLS connection to `github.com'... Opening TLS connection with `gnutls-cli --insecure -p 443 github.com'...done
先に進めない。gnutlsが正しく動作していないものと思われる。
configure オプション検討
環境変数 MSYSTEM=MINGW32
configure は MSYSTEMの値を参照しており、 MSYS2のシェルのデフォルト MSYSTEM=MSYS ではconfigureが通らないので、 MSYSTEM=MINGW32 を指定する。
環境変数 PKG_CONFIG_PATH
MSYS2のシェルのデフォルトでは、PKG_CONFIG_PATH は下記のようになっている。
PKG_CONFIG_PATH=/usr/lib/pkgconfig:/lib/pkgconfig
rsvg-2,gnutls等で
PKG_CONFIG_PATH=/mingw32/lib/pkgconfig
引数 -shared-libgcc
/etc/PROBLEMS に、Emacs終了時にクラッシュする不具合についての記載がある。
#+BEGIN_EXAMPLE
Emacs crashes when exiting the Emacs session
This was reported to happen when some optional DLLs, such as those used for displaying images or the GnuTLS library or zlib compression library, which are loaded on-demand, have a runtime dependency on the libgcc DLL, libgcc_s_dw2-1.dll. The reason seems to be a bug in libgcc which rears its ugly head whenever the libgcc DLL is loaded after Emacs has started.
One solution for this problem is to find an alternative build of the same optional library that does not depend on the libgcc DLL.
Another possibility is to rebuild Emacs with the -shared-libgcc switch, which will force Emacs to load libgcc_s_dw2-1.dll on startup, ahead of any optional DLLs loaded on-demand later in the session. #+END_EXAMPLE
これを回避する為、-shared-libgcc を指定する。
デバッグ情報
引数無しで configure を実行した時の Makefile では CFLAGS は下記のようになる。
CFLAGS=-g3 -O2 -gdwarf-2
-g3 -gdwarf-2 はデバッグ情報の出力指定であり、デフォルトがデバッグ情報有りというのも不思議(emacsならでは?)だが、通常は不要なので指定無しでよい。