소켓 기능을 사용하여 간단한 서버 프로그램을 작성했습니다. g++
으로 컴파일하면 send, __xnet_socket, 수신 대기, __xnet_bind에 대해 정의되지 않은 기호 오류가 발생합니다.솔라리스에서 g ++로 컴파일하면 dlsym()을 사용하여 socket() 및 bind()가 인터셉트되지 않습니다.
왜 소켓과 바인드 기호가 다른 기호와 다른가요? 또한 gcc
을 사용하여 프로그램을 컴파일하면이 'xnet
'의 차이가 발생하지 않습니다. 이 연결 오류는 libsocket.so
(으)로 연결될 때 발생합니다.
사실,이 소켓 API를 오버로드하고이를 dlsym()
을 사용하여 차단하는 공유 라이브러리를 작성 중입니다. Solaris에서이 라이브러리를 gcc로 컴파일하면이 호출이 라이브러리를 거치지 만 g++
으로 컴파일하면 socket()
과 bind()
호출은 가로채는 것이 아니라 다른 모든 apis가 라이브러리를 통과합니다.
libxnet.so
이 작업을 수행 하시겠습니까? dtrace가 도움이 될 수 있습니까?
* g ++로 컴파일하면 send, __xnet_socket, listen, accept, __xnet_bind에 대해 정의되지 않은 기호 오류가 발생합니다. * '-lxnet'과 연결되어 있지 않은 것처럼 들립니다. 링크 명령 [s]을 게시하십시오. –