WINE@Etersoft eter6.10/eter11 При попытке выполнить ping из $ wineconsole cmd на ALTLinux 64(тестировал на builder64) выдается unknow host Хотя на 32 битном ALTLinux и на Ubuntu 64 работает без проблем.
Для проверки использовал код с примером из MSDN: http://msdn.microsoft.com/en-us/library/ms738524(VS.85).aspx , который так же воспроизвел данную проблему. Она заключалась в неработающих функциях gethostbyname и gethostbyaddr. В dll socket.c они использовали линуксовые gethostbyname_r и gethostbyaddr_r После отладок я выяснил, что ping.exe.so слинкован только с такими либами: ---------- [mdevaev@builder64 ping]$ ldd ping.exe.so libwine.so.1 => /usr/lib/libwine.so.1 (0xb7e5a000) libc.so.6 => /lib/libc.so.6 (0xb7d02000) libdl.so.2 => /lib/libdl.so.2 (0xb7cfd000) /lib/ld-linux.so.2 (0x00477000) ---------- Функции gethostbyname_r и gethostbyaddr_r находились в libnss.so, которая динамически подгружается в glibc. Пути загрузки выглядели так: ---------- open("/lib/tls/libnss_dns.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) open("/lib/i686/libnss_dns.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) open("/lib/libnss_dns.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/tls/libnss_dns.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/libnss_dns.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) ---------- То есть, программа пыталась получить доступ к 32-битным либам. В случае использования builder64 эти либы не были установлены. Проблема решилась установкой пакета glibc-nss.i586.
Принято.