这会有用吗?十六进制编辑了一个文件并将inet_aton更改为inet_pton

时间:2012-05-15 01:13:16

标签: python sockets solaris

我正在尝试将python脚本移植到旧的Solaris 10计算机上。我从sunfreeware下载并安装了所有必需的软件包。它在导入行(导入CGIHTTPServer)中崩溃并显示以下错误消息:

  

ImportError:ld.so.1:python:fatal:重定位错误:文件/usr/local/lib/python2.6/lib-dynload/_socket.so:符号inet_aton:未找到引用的符号

我尝试使用libresolve重新编译,但我不想这样做,所以我将文件_socket.so复制到我的linux机器并使用ghex2进行编辑。我用inet_pton替换了inet_aton,因为我读到solaris使用的是inet_pton。我也读过python documentation that both system calls are similar

我将文件_socket.so复制回原始目录,备份旧文件并替换为修补过的文件。它正在运行,到目前为止看起来还不错。

您认为python套接字模块将来会破坏吗?

inet_atoninet_pton返回结构是否兼容?

2 个答案:

答案 0 :(得分:0)

没有; inet_atoninet_pton不兼容。看看原型:

int inet_aton(const char *, struct in_addr *);
int inet_pton(int, const char *, void *);

完全不同。试图将一个交换为另一个只会导致痛苦和痛苦(最可能的是崩溃)。如果你已经完成了它并且它似乎正在工作,那可能是因为没有调用使用inet_aton的代码。

答案 1 :(得分:0)

您认为python套接字模块将来会破坏吗?

是。 inet-aton和inet_pton不使用相同数量和类型的参数。第一次调用这个php函数时,你的代码可能会破坏或至少出现功能障碍。如果你(或你使用的图书馆)从不打电话,你可能很安全。