我已经用套接字函数写了一个简单的服务器程序。使用g++编译时,它会给出send、__xnet_socket、listen、accept、__xnet_bind未定义的符号错误。
为什么套接字和绑定的符号与其他符号不同。此外,当使用gcc编译程序时,这种“xnet”差异不会发生。当与libsocket.so链接时,出现此链接错误。
实际上,我正在编写一个共享库,它重载这些套接字API并使用dlsym()拦截它们。在Solaris上,当用gcc编译这个库时,这些调用都会经过这个库,但是当用g++编译时,socket()和bind()调用不会被截获,但是所有其他apis都会经过这个库。
这和libxnet.so有什么关系吗?dtrace能提供一些帮助吗?
发布于 2018-01-15 05:36:19
libxnet是11.3中的一个过滤器库;函数从libxnet移到了libsocket、libnsl和libc。
我过去在Solaris上构建操作系统时发现,将-lsocket -lnsl附加到LDLIBS通常可以轻松地完成配置和构建阶段。链接器足够智能,可以从输出中删除不必要的引用。
https://stackoverflow.com/questions/47690603
复制相似问题