Fri, Dec 20, 2013 at 19:20:20, alexey.bobok wrote about "[freebsd] Проблема
компиляции mysql-connector-odbc":
> Не могу скомпилировать mysql-connector-odbc-5.1.9 на FreeBSD 9.2 amd64
> Есть мысли как решить проблему?
[...]
> /usr/ports/databases/mysql-connector-odbc/work/mysql-connector-odbc-5.1.9/driver/connect.c:614:
> error: 'RTLD_GLOBAL' undeclared (first use in this function)
> /usr/ports/databases/mysql-connector-odbc/work/mysql-connector-odbc-5.1.9/driver/connect.c:614:
> error: 'RTLD_LAZY' undeclared (first use in this function)
Вот эти реальные ошибки, всё остальное - предупреждения, которые,
конечно, требуют внимания, но в общем случае ещё не означают проблему.
А эти ошибки означают отсутствие включения <dlfcn.h> в connect.c.
Так как у меня на аналогичной системе (9.2/amd64) порт собрался без
проблем, а судя по логу компилятор был применён базовый системный
4.2.1, проблема не в версии gcc (и все советы его сменить считаю
аналогичным пинкам по колёсам, если двигатель не заводится).
Имена RTLD_{GLOBAL,LAZY} используются в макро LoadLibrary в driver.h,
который зовётся из connect.c. Однако в нём нет include <dlfcn.h>.
В сборке у меня этот файл вызывается из MYODBC_ODBC.h, но под условием
HAVE_LIBDL, которое нигде не определяется.
Дальнейшая разборка ситуации невозможна без изучения целевой системы,
но думаю, что надо было проапгрейдить пакеты cmake для такой сборки
(обоснование - если управляющее макро нигде в самом пакете не
определено, его надо искать в сборочной системе).
Альтернативно - написать соответствующий include прямо в connect.c
после make patch в порте.
-netch-