首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在solaris上,当使用g++编译时,套接字()和绑定()不会被dlsym()截获。

在solaris上,当使用g++编译时,套接字()和绑定()不会被dlsym()截获。
EN

Stack Overflow用户
提问于 2017-12-07 16:24:26
回答 1查看 370关注 0票数 0

我已经用套接字函数写了一个简单的服务器程序。使用g++编译时,它会给出send、__xnet_socket、listen、accept、__xnet_bind未定义的符号错误。

为什么套接字和绑定的符号与其他符号不同。此外,当使用gcc编译程序时,这种“xnet”差异不会发生。当与libsocket.so链接时,出现此链接错误。

实际上,我正在编写一个共享库,它重载这些套接字API并使用dlsym()拦截它们。在Solaris上,当用gcc编译这个库时,这些调用都会经过这个库,但是当用g++编译时,socket()bind()调用不会被截获,但是所有其他apis都会经过这个库。

这和libxnet.so有什么关系吗?dtrace能提供一些帮助吗?

EN

回答 1

Stack Overflow用户

发布于 2018-01-15 05:36:19

libxnet是11.3中的一个过滤器库;函数从libxnet移到了libsocket、libnsl和libc。

我过去在Solaris上构建操作系统时发现,将-lsocket -lnsl附加到LDLIBS通常可以轻松地完成配置和构建阶段。链接器足够智能,可以从输出中删除不必要的引用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47690603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档