2012-12-20 1 views
0

libAPR 소스를 컴파일하고 Apache에서 제공하는 모든 테스트를 성공적으로 실행했습니다.Libapr .so 파일에 소스 코드의 기능이 없습니다

그러나 libapr.so에 내 프로그램을 연결하면 동일한 기능이 없습니다.

예를 들어 apr_pollset_add 프리미티브가 작동하지 않습니다. 항상 1을 반환하고 (0을 반환해야 함) 작동하지 않습니다 (소스 테스트에서 참처럼 작동 함).

해당 프리미티브와 관련된 APRlib의 모든 코드를 수정하여 -1을 반환합니다. 아파치 테스트를 실행할 때 예상 동작 (반환 -1)을 표시하지만, .so 라이브러리의 프리미티브를 다시 호출하면 항상 1을 반환합니다.

나는 거의 lib에 래퍼가 있다는 것을 확신합니다. 그 함수는 항상 1을 반환합니다.

무슨 일이 일어나고 있는지 실마리가 있습니까?

+0

컴파일 한 것과 동일한 lib를 링크하고 있습니까? –

+0

예. 이전 버전을 삭제했습니다. 컴파일을 시도했는데 프로그램에서 찾지 못해서 오류가 발생했습니다. 그런 다음 'make install'을 실행하고 프로그램이 성공적으로 다시 컴파일됩니다. 그래서 나는 새로운 libs를 사용하고 있다고 확신한다. 물론 설치하기 전에 – twawpt

+0

을 만들고, 깨끗하게 만들었습니다. ^^ – twawpt

답변

1

이렇게 마침내 문제가 발견되었습니다.

libapr을 이미 시스템에 설치 했으므로 -libapr-1을 사용할 때마다 내 프로그램이 이전에 설치된 libapr 버전과 연결됩니다. 그것이 내 코드 수정에 응답하지 않는 이유였습니다.

apr_pollset_add primitve에 대해서는 잘 작동하고 있습니다. apr이 poll_ctl을 호출 할 때 시스템에서 오류를 반환합니다. 이는 받아 들여지지 않는 일반 파일 설명자를 추가했기 때문입니다.

관련 문제