gcc 수동 texinfo 파일을 정보로 만드는 방법은 무엇입니까?

gcc 수동 texinfo 파일을 정보로 만드는 방법은 무엇입니까?

나는 다음에서 gcc 정보 매뉴얼이 포함된 아카이브를 다운로드했습니다.공식 페이지. 아카이브를 추출하면 단일 .texi 파일이 생성되지 않지만, .texi 파일이 많을 경우 매우 복잡한 디렉터리 구조가 생성됩니다. 실제로 이러한 파일을 단일 .info 파일로 변환하는 방법을 잘 모르겠습니다(이를 내 emacs 정보 디렉토리/usr/share/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

원하는 코드만 추출한 다음 ( 전체 GCC 패키지를 빌드하기 위해 etc를 실행할 때 Makefile생성되는 ) 코드와 독립적으로 실행하는 간단하고 간단한 방법은 없다고 생각합니다 . 로컬로 빌드해야 하는 경우 패키지의 표준 빌드 지침을 따르세요.Makefile.in./configure

좀 더 자세히 말하자면,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 버전에 대해 문제를 해결하는 해킹입니다.

TLDR:

1단계: docs가 포함된 폴더 에서 텍스트 편집기를 사용하여 gcc.texi파일을 열고 install.texi2html이라는 마지막 줄을 제거합니다 rm $DESTDIR/gcc-vers.texi.

2단계: `./install.texi2html을 사용하여 스크립트를 실행합니다.

3단계: 실행makeinfo gcc.texi -P ./HTML -P ./include

info gcc.info4단계: , 또는 emacs를 사용하여 설명서를 읽은 C-u F1 i다음 읽습니다.path/to/gcc.info

설명:

문제는 독립 실행형 texinfo 소스가 다음 목록에 나열된 타르볼이라는 것입니다.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. 해당 파일은 어디에서도 찾을 수 없지만 autogen전체 gcc 소스 트리(texi 소스뿐만 아니라)가 구성되고 빌드될 때 자동으로 생성되도록 의도되었습니다. 그러나 운이 좋다. 와 같은 디렉토리에 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

관련 정보