나는 prog 초기화의 예상 및 원하는 결과, 특히 소스 코드가 없는 프로그램에 대한 공유 라이브러리를 로드하는 것에 대한 입력을 요청하고 있습니다. 모든 코드는 RPM을 통해 전달됩니다.
의심되는 프로그램은 두 TCP 연결 모두에서 지속적인 Revc-Q 버퍼링을 나타냅니다. TCP 연결의 다른 쪽 끝은 괜찮아 보입니다. 의심되는 프로그램은 거의 지속적으로 1000~10000바이트를 버퍼링하며 0이 되는 경우는 거의 없습니다. 의심되는 프로그램의 호스트에서는 tcpActiveOpens.0이 50,000이고 tcpAttemptFails.0이 47,000으로 표시되는데, 둘 다 지속적으로 증가하고 있습니다. 다른 많은 TCP 문제가 발생할 수 있습니다.
의심스러운 프로그램에서 ldd가 실행되면 총 42개의 라이브러리가 반환되며, 그 중 24개는 "찾을 수 없음"이고 18개는 DIR 및 헥사더를 사용하여 확인됩니다. 의심되는 프로그램 주위에 strace 래퍼를 배치하고 ldd에서 "찾을 수 없음"으로 표시된 라이브러리뿐만 아니라 모든 라이브러리에 많은 "-1 ENOENT"를 기록합니다. 결국 모든 라이브러리가 발견되어 의심되는 프로그램 메모리에 로드됩니다. 어떤 사람들은 성공하기 전에 42개의 ENOENT를 가지고 있습니다.
개발자에게 연락하여 결과를 알렸고 그들은 ldd를 실행할 때 프로그램 시작 시 실행되고 모든 라이브러리 경로를 설정해야 하는 환경 구성 파일을 가져와야 한다고 확신했습니다. 이노엔트에 관한 리뷰가 없습니다.
질문: 코드를 완성하고 컴파일한 후 이를 확인하기 위해 ldd와 같은 도구를 사용합니까? ldd가 항상 0을 반환해야 하는지 아니면 일부 또는 다수의 "찾을 수 없음"을 반환해야 하는지가 항상 질문이 되는 것은 아닙니다. 이노엔트는 어떻습니까? 코드가 올바르게 컴파일되고 실행된다면 오류가 없어야 할 것 같습니다.
답변1
ldd
항상 OK를 반환해야 합니다. 그렇지 않으면 프로그램이 실행되지 않습니다. 반면에 동적 링커가 공유 라이브러리를 검색하는 위치를 제어하는 방법이 있습니다. 프로그램 공급업체로부터 받은 응답에 따르면 검색 경로가 만족되도록 프로그램 환경을 설정하기 위한 일종의 시작 스크립트를 이미 제공하고 있다고 가정합니다. 프로그램을 예상대로 실행하지 않으면 ldd
오류가 보고될 가능성이 높습니다.
ENOENT
라이브러리 검색 경로에 여러 디렉터리가 포함되어 있으면 이러한 오류는 완전히 정상입니다. 동적 링커는 요청된 파일을 열어서 찾고 있는 것을 찾으려고 시도하고, 찾을 수 없으면("해당 파일이나 디렉터리가 없음") 검색 경로의 다음 디렉터리로 계속 이동합니다. 이는 공유 라이브러리뿐만 아니라 다른 유형의 파일에도 적용됩니다. 예를 들어 구성 파일이 선택 사항인 경우 프로그램은 오류 메시지를 무시하고 계속 실행됩니다.
시. 귀하의 질문에 대한 신문 데이트 광고 스타일이 흥미롭다고 생각합니다.