gcc infoマニュアルのアーカイブをダウンロードしました公式ページアーカイブを解凍すると、単一の .texi ファイルではなく、多数の .texi ファイルが含まれる非常に複雑なディレクトリ構造になります。これらを実際に単一の .info ファイルに変換する方法がわかりません (emacs info ディレクトリ /usr/share/info に install-info できるようにするには、その方法を知っています)。
多数の .texi ファイルがあるこのディレクトリから .info ファイルを取得する方法がまったくわかりません。抽出された最上位ディレクトリから gcc/doc に移動し、(約 30 個の他の texi ファイルの中に) gcc.texi というファイルを見つけました。試してみると、そのファイルが gcc/doc/include にあるにもかかわらず、makeinfo gcc.texi
というエラーが表示されます。gcc.texi:25: @include: could not find gcc-common.texi
これを構築するために使用する必要があるコマンドは何ですか?
答え1
必要なコードだけを抽出し、それをMakefile
( etcMakefile.in
を実行して./configure
GCC パッケージ全体をビルドするときに生成される) とは独立して実行する、単純明快な方法はないと思います。本当にローカルでビルドする必要がある場合は、パッケージの標準ビルド手順に従ってください。
もう少し詳しく説明すると、Makefile.in
次のスニペットが含まれています。
info: do-info
# Make sure makeinfo is built before we do a `make info', if we're
# in fact building texinfo.
do-info: maybe-all-texinfo
install-info: do-install-info dir.info
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
if [ -f dir.info ]; then \
$(INSTALL_DATA) dir.info $(DESTDIR)$(infodir)/dir.info; \
else true; fi
#...
.PHONY: all-texinfo maybe-all-texinfo
maybe-all-texinfo:
@if gcc-bootstrap
all-texinfo: stage_current
@endif gcc-bootstrap
@if texinfo
TARGET-texinfo=all
maybe-all-texinfo: all-texinfo
all-texinfo: configure-texinfo
@: $(MAKE); $(unstage)
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/texinfo && \
$(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(STAGE1_FLAGS_TO_PASS) \
$(TARGET-texinfo))
@endif texinfo
#...
.PHONY: do-install-info
do-install-info:
@: $(MAKE); $(unstage)
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(MAKE) $(RECURSE_FLAGS_TO_PASS) install-info-host \
install-info-target
.PHONY: install-info-host
install-info-host: maybe-install-info-bfd
install-info-host: maybe-install-info-opcodes
install-info-host: maybe-install-info-binutils
install-info-host: maybe-install-info-bison
定義は個別のターゲットの非常に長いリストで進みますが、私は最後までやり遂げませんでした。
答え2
OP さん、ここに問題を解決するハックがあります。少なくとも、OP のリンクからダウンロードしたスタンドアロン texinfo ソースの 8.3.0 バージョンについてはそうです:
要約:
ステップ 1:docs
を含むフォルダーでgcc.texi
、テキスト エディターを使用してファイルを開きinstall.texi2html
、 という最後の行を削除しますrm $DESTDIR/gcc-vers.texi
。
ステップ2: `./install.texi2htmlを使用してスクリプトを実行します。
ステップ3: 実行makeinfo gcc.texi -P ./HTML -P ./include
ステップ4:またはemacsを使用してマニュアルを読みinfo gcc.info
、C-u F1 i
path/to/gcc.info
説明:
問題は、スタンドアロンのtexinfoソースtarballがgcc オンラインドキュメントページMakefile は含まれていません。gcc のメンテナーは、スタンドアロンの情報マニュアルを簡単にコンパイルできるようにすることにあまり関心がなかったようです。
これを動作させるためのハックは次のとおりです (これは gcc 8.3 texinfo ソースでは機能しました)。
gcc/gcc/docs
まず、アーカイブを解凍した場所に移動します。 gcc.texi
、 というディレクトリinclude
、およびその他の.texi
ファイルが表示されます。 ここで を実行しようとするとmakeinfo gcc.texi
、見つからないなどのエラーが多数表示されますgcc-common.texi
。 見つからないファイルは ディレクトリ内にあるためinclude
、オプションを使用してそれを検索パスに追加します-P
。
makeinfo gcc.texi -P ./include
しかし、 が見つからないというエラーが表示されますgcc-vers.info
。そのファイルはどこにも見つかりませんが、完全な gcc ソース ツリー (texi ソースだけではなく) が構成され、ビルドされるときに によって自動的に生成されることを意図したものです。ただし、 と同じディレクトリにというスクリプトがあるautogen
ため、幸運です。スクリプトの最後には、次の行があります。gcc.texi
install.texi2html
rm $DESTDIR/gcc-vers.texi
これは、スクリプトが実際に必要なファイルを生成し、その後それを削除していることを意味します。したがって、スクリプトからその行を削除して再度実行すると、 が表示されます。次に、ディレクトリをパスにHTML/gcc-vers.texi
追加すると、今度は正しくビルドされます。HTML
gcc.texi
ちなみに、ほとんどの.texi
ファイルは実際にはサブノードです。幸いなことに、各ファイルの先頭近くにあるコメントで簡単に識別できます。それらを(そのコメントで)フィルタリングしてトップレベルのノードファイルのリストを表示するには、次のようにします。
grep -L '@c This is part of the' *.texi
結果のファイルは
ppinternals.texi
cpp.texi
gccint.texi
gcc.texi
install.texi
poly-int.texi