我正在尝试将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_aton
和inet_pton
返回结构是否兼容?
答案 0 :(得分:0)
没有; inet_aton
和inet_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函数时,你的代码可能会破坏或至少出现功能障碍。如果你(或你使用的图书馆)从不打电话,你可能很安全。