pecl install grpc를 실행할 때 다음과 같은 경고 메시지가 대량으로 표시될 수 있습니다.
#7 67.72 /tmp/pear/temp/grpc/src/core/lib/promise/detail/promise_factory.h:174:5: warning: 'always_inline' function might not be inlinable [-Wattributes] #7 352.5 /tmp/pear/temp/grpc/src/core/lib/event_engine/forkable.h:61:34: warning: 'unused' attribute ignored [-Wattributes]
이러한 경고가 수백 개나 발생하여 로그가 넘칠 수 있습니다. CI/CD 파이프라인이 로그 제한을 초과하여 오류가 발생하고 프로세스가 중단되는 배포 중에 특히 문제가 되었습니다.
온라인에서 경고 메시지를 검색하면 GNU 컴파일러 컬렉션인 GCC를 가리킵니다.
이러한 경고는 gRPC 소스 코드를 빌드할 때 컴파일러에 의해 생성되는 것으로 나타났습니다. 경고는 gRPC의 소스 코드에서 발생하므로 사용자가 경고를 억제하기 위해 소스 코드를 직접 수정하는 것은 불가능합니다.
다행히도 GCC는 빌드 프로세스 중에 컴파일러에 전달할 수 있는 경고 메시지를 억제하는 여러 옵션을 제공합니다.
GCC 문서의 경고 옵션
그러나 pecl install grpc를 실행할 때 이러한 옵션을 직접 전달하는 간단한 방법은 없습니다. 혹시 알고 계신다면 알려주세요. 기쁨의 눈물로 축하하겠습니다! ?
그럼 이제 어떻게 될까요?
StackOverflow 스레드에서 답을 얻었습니다. pecl 설치가 모든 것을 처리하도록 하는 대신 프로세스를 더 작은 단계로 나누고 컴파일 단계에서 옵션을 전달할 수 있습니다.
참조: StackOverflow
gRPC는 C로 작성되었으므로 CFLAGS 및 CXXFLAGS와 같은 환경 변수를 사용하여 컴파일 중에 경고를 표시하지 않는 옵션을 지정할 수 있습니다.
GCC 최적화에 대한 Gentoo Wiki
gRPC가 Dockerfile에 설치된다고 가정해 보겠습니다.
RUN pecl install grpc
RUN pecl download grpc \ && tar xzf $(ls grpc-*.tgz | head -n 1) \ && cd $(ls -d grpc-*/ | head -n 1) \ && phpize \ && ./configure --with-php-config=/usr/local/bin/php-config \ && make -e CFLAGS="-Wno-attributes -Wno-unused-parameter -Wno-deprecated-declarations -Wno-return-type" CXXFLAGS="-Wno-attributes -Wno-unused-parameter -Wno-deprecated-declarations -Wno-return-type" \ && make install
after 명령은 pecl install이 내부적으로 수행하는 작업을 모방하지만 더 많은 제어 기능을 제공합니다. 프로세스를 분석하면 뒤에서 PECL 설치가 얼마나 많은 작업을 처리하는지 알 수 있습니다. 정말 인상적입니다!
만들기 단계에서 경고가 표시되었으므로 CFLAGS 및 CXXFLAGS 환경 변수를 통해 억제 옵션을 전달했습니다.
make -e CFLAGS="-Wno-attributes -Wno-unused-parameter -Wno-deprecated-declarations -Wno-return-type" CXXFLAGS="-Wno-attributes -Wno-unused-parameter -Wno-deprecated-declarations -Wno-return-type"
어떤 억제 옵션을 사용할지 결정하려면 경고 메시지의 끝부분을 살펴보세요. [-Wattributes] 또는 [-Wunused-parameter]와 같은 힌트를 자주 볼 수 있습니다. 이를 억제하려면 -Wno-attributes 또는 -Wno-unused-parameter와 같이 시작 부분에 no를 추가하세요.
자세한 내용은 공식 문서를 참조하세요.
GCC 문서의 경고 옵션
이러한 접근 방식으로 gRPC 경고 메시지의 늪에서 성공적으로 탈출했습니다. 하지만 CI/CD 로그 제한 문제는 완전히 해결되지 않았으며, 이는 향후 게시물에서 다루겠습니다.
이 글을 통해 한 분이라도 gRPC 경고 메시지의 늪에서 벗어날 수 있다면 기쁘겠습니다! ?
위 내용은 `pecl install grpc` 실행 시 과도한 경고 메시지를 처리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!