Есть некоторое ПО, которое необходимо распространять в бинарниках.
Версии под FreeBSD, Solaris, Windows не вызывают никаких трудностей,
но вот с Линуксами я запутался окончательно:
В моем распоряжении было несколько дистрибутивов. Под каждым
я компилировал программу и потом каждую программу запускал
под каждым линуксом.
В итоге получил вот такую таблицу совместимости:
Таким образом у меня есть 4 версии программы, как мне указать, какая
из них для какого линукса ?
------------------------------------------------------------------
Компилировано в Ядро glic Работает в Ядро glibc
------------------------------------------------------------------
Madrake-10.1 2.6.8 2.3.3 Madrake-10.1 2.6.8 2.3.3
SuSE 7.3 2.4.10 2.2.4 SuSE 7.3 2.4.10 2.2.4
SuSE 9.0 2.4.21 2.3.2
Knopix 3.8 2.4.27 2.3.2
Debian 3.0 2.2.20 2.2.5
IBM/Linyx LiveCD 2.6.3 2.3.3 IBM/Linyx LiveCD 2.6.3 2.3.3
Debian 2.2 2.2.17 2.1.3 Debian 2.2 2.2.17 2.1.3
Пишу небольшой сервер. Все работает. Только два нюанса. После того, как accept первый раз возвращает «-1», последующие вызовы этой функции начинают возвращать «0» вместо IP адреса.
if (c_sock<=0) continue;
if (c_sock>0) {
sendbuff_size=0;
sendbuff[0]=0;
memset(buf,0,MAXRECV+1);
int status=recv(c_sock,buf,MAXRECV,O_NONBLOCK);
char *ip=strdup(inet_ntoa(c_sock_info.sin_addr));
…
Вторая проблема в том, что сервер попросту вываливается, если в MSIE просто подержать F5. При тестировании через ab все работает, даже с большим количеством параллельных запросов.
Столкнулся тут с такой проблемой, моя программа не хочет работать под FreeBSD (пробовал 3.4 и 4.3).
Все компилируется, но во время работы Segmentation Fault. Во время отладки не может обратится к некоторым глобальным переменным (объявленым как static).
Причем под Windows и SUSE Linux все работает на ура. Утечек памяти и прочей байды нет. Проверено CodeGuard'ом.