Я сделал полную установку Cygwin на Windows Server 2008 R2 и скачал исходный код Squid3.4.4. Я запустил команду ./configure [options], а затем следующий шаг — сделать и установить squid.
Когда я запускаю make, я получаю массу ошибок. Вот пример того, что я вижу:
$ make Создание всего в compat make [1]: вход в каталог
‘/home/Administrator/squid-3.4.4/compat’ / bin / sh ../libtool —tag = CXX
—mode = compile g ++ -DHAVE_CONFIG_H -I .. -I ../ include -I ../ lib -I ../ src -I ../ include -I / usr / include -I / usr / include -I / usr / include -I / usr / include -I / usr / include -I / usr / include -I / usr / include -I / usr / include -Wall -Wpointer-arith -Write-strings -Wcomments -Wshadow -Werror -pipe -D_REENTRANT -g -O2 -march = native -std = c ++ 0x -MT assert.lo -MD -MP -MF .deps / assert.Tpo -c -o assert.lo assert.cc libtool: compile: g ++ -DHAVE_CONFIG_H -I .. -I ../ включает -I ../ lib
-I ../ src -I ../ include -I / usr / include -I / usr / include -I / usr / include -I / usr / include -I / usr / include -I / usr / include -I / usr / include -I / usr / include -Wall -Wpointer-arith -Wwrite-strings -Wcomments -Wshadow -Werror -pipe -D_REENTRANT -g -O2 -march = native -std = c ++ 0x -MT assert.lo -MD -MP -MF .deps / assert.Tpo -c assert.cc -DDLL_EXPORT -DPIC -o .libs / assert.o В файле, включенном в ../compat/compat.h:64:0,
из ../include/squid.h:66,
from assert.cc:32: ../compat/os/mswindows.h:152:0: ошибка: «O_RDONLY» переопределено [-Werror] #define O_RDONLY
_O_RDONLY ^ В файле, включенном в /usr/include/sys/fcntl.h:3:0,
из /usr/include/fcntl.h:14,
от ../compat/os/mswindows.h:48,
из ../compat/compat.h:64,
из ../include/squid.h:66,
от assert.cc:32: /usr/include/sys/_default_fcntl.h:34:0: примечание: это местоположение
предыдущее определение #define O_RDONLY 0 / * +1 == FREAD * / ^ In
файл включен из ../compat/compat.h:64:0,
из ../include/squid.h:66,
from assert.cc:32: ../compat/os/mswindows.h:153:0: ошибка: «O_WRONLY» переопределено [-Werror] #define O_WRONLY
_O_WRONLY ^ В файле, включенном в /usr/include/sys/fcntl.h:3:0,
из /usr/include/fcntl.h:14,
от ../compat/os/mswindows.h:48,
из ../compat/compat.h:64,
из ../include/squid.h:66,
от assert.cc:32: /usr/include/sys/_default_fcntl.h:35:0: примечание: это местоположение
предыдущее определение #define O_WRONLY 1 / * +1 == FWRITE * / ^ In
файл включен из ../compat/compat.h:64:0,
из ../include/squid.h:66,
from assert.cc:32: ../compat/os/mswindows.h:154:0: ошибка: «O_RDWR» переопределено [-Werror] #define O_RDWR _O_RDWR
^ В файле, включенном из /usr/include/sys/fcntl.h:3:0,
из /usr/include/fcntl.h:14,
от ../compat/os/mswindows.h:48,
из ../compat/compat.h:64,
из ../include/squid.h:66,
от assert.cc:32: /usr/include/sys/_default_fcntl.h:36:0: примечание: это местоположение
предыдущее определение #define O_RDWR 2 / * +1 == FREAD | FWRITE * /
^ В файле, включенном из ../compat/compat.h:64:0,
из ../include/squid.h:66,
from assert.cc:32: ../compat/os/mswindows.h:155:0: ошибка: «O_APPEND» переопределено [-Werror] #define O_APPEND
_O_APPEND ^ В файле, включенном в /usr/include/sys/fcntl.h:3:0,
из /usr/include/fcntl.h:14,
от ../compat/os/mswindows.h:48,
из ../compat/compat.h:64,
из ../include/squid.h:66,
от assert.cc:32: /usr/include/sys/_default_fcntl.h:37:0: примечание: это местоположение
предыдущее определение #define O_APPEND _FAPPEND ^ в файле включено
от ../compat/compat.h:64:0,
из ../include/squid.h:66,
from assert.cc:32: ../compat/os/mswindows.h:157:0: ошибка: «O_CREAT» переопределено [-Werror] #define O_CREAT _O_CREAT
^ В файле, включенном из /usr/include/sys/fcntl.h:3:0,
из /usr/include/fcntl.h:14,
от ../compat/os/mswindows.h:48,
из ../compat/compat.h:64,
из ../include/squid.h:66,
от assert.cc:32: /usr/include/sys/_default_fcntl.h:38:0: примечание: это местоположение
предыдущее определение #define O_CREAT _FCREAT ^ в файле включено
от ../compat/compat.h:64:0,
из ../include/squid.h:66,
from assert.cc:32: ../compat/os/mswindows.h:158:0: ошибка: «O_TRUNC» переопределено [-Werror] #define O_TRUNC _O_TRUNC
^ В файле, включенном из /usr/include/sys/fcntl.h:3:0,
из /usr/include/fcntl.h:14,
от ../compat/os/mswindows.h:48,
из ../compat/compat.h:64,
из ../include/squid.h:66,
от assert.cc:32: /usr/include/sys/_default_fcntl.h:39:0: примечание: это местоположение
предыдущее определение #define O_TRUNC _FTRUNC ^ в файле включено
от ../compat/compat.h:64:0,
из ../include/squid.h:66,
from assert.cc:32: ../compat/os/mswindows.h:159:0: ошибка: «O_EXCL» переопределено [-Werror] #define O_EXCL _O_EXCL
^ В файле, включенном из /usr/include/sys/fcntl.h:3:0,
из /usr/include/fcntl.h:14,
от ../compat/os/mswindows.h:48,
из ../compat/compat.h:64,
из ../include/squid.h:66,
от assert.cc:32: /usr/include/sys/_default_fcntl.h:40:0: примечание: это местоположение
предыдущее определение #define O_EXCL _FEXCL ^ в файле включено
от ../compat/compat.h:64:0,
из ../include/squid.h:66,
from assert.cc:32: ../compat/os/mswindows.h:161:0: ошибка: «O_TEXT» переопределено [-Werror] #define O_TEXT _O_TEXT
^ В файле, включенном из /usr/include/sys/fcntl.h:3:0,
из /usr/include/fcntl.h:14,
от ../compat/os/mswindows.h:48,
из ../compat/compat.h:64,
из ../include/squid.h:66,
от assert.cc:32: /usr/include/sys/_default_fcntl.h:53:0: примечание: это местоположение
предыдущее определение #define O_TEXT _FTEXT
Я не знаком с C ++. Есть идеи, что может быть причиной этого?
Похоже, ваша сборка пытается определить одни и те же символы несколько раз, предположительно потому, что существует слой совместимости, который пытается их определить, и «правильное» определение в другом месте.
Я хотел бы найти «дублирующее определение» (похоже, оно находится в ./compat/mswindows.h) и поместить #ifdef O_RDONLY (первый определенный символ) вокруг всего этого.
Я ни в коем случае не уверен, что это решит ВСЕ ваши проблемы, но, надеюсь, добьется некоторого прогресса в хорошем направлении.
Других решений пока нет …