我使用套接字函数编写了一个简单的服务器程序。
使用g++
编译时,它会为send,__ xnet_socket,listen,accept,__ xnet_bind提供未定义的符号错误。
为什么socket和bind的符号与其他符号不同。
此外,当使用gcc
编译程序时,不会发生此“xnet
”差异。
与libsocket.so
链接时会出现此链接错误。
实际上,我正在编写一个共享库,它重载这些套接字API并使用dlsym()
拦截它们。
在Solaris上,当使用gcc编译此库时,这些调用将通过库进行,但在使用g++
进行编译时,socket()
和bind()
调用不会被截获,但所有其他apis都会被截获通过图书馆。
有libxnet.so
对此做些什么吗?
可以提供一些帮助吗?
答案 0 :(得分:0)
您需要链接libsocket(通过-lsocket
),以便链接器获取这些功能。 libxnet是11.3中的过滤器库;函数从libxnet移到libsocket,libnsl和libc。
我在过去发现在Solaris上构建OSS时,将-lsocket -lnsl
附加到LDLIBS通常可以轻松地完成配置和构建阶段。链接器足够智能,可以从输出中删除不必要的引用。