Ошибка перемещения: символ init_dynamic_string: указанный символ не найден
Я пытаюсь скомпилировать поддержку MySQL ODBC в Stata на машине Solaris. Единственное отношение, которое имеет здесь Stata, заключается в том, что версия Solaris скомпилирована как 64-битные двоичные файлы, поэтому все, к чему она прикасается, должно быть также 64-битным.
До сих пор я компилировал MySQL как 64-битный, libiodbc как 64-битный и mysql-connector-odbc как 64-битный.
Я думаю, это должно сработать, но есть ошибка, которую выдает iodbctest:
root@l5-cisswdia:/global/software_build_area/stata# iodbctest mysql-test
iODBC Demonstration program
This program shows an interactive SQL processor
Driver Manager: 03.52.0709.0909
1: SQLDriverConnect = [iODBC][Driver Manager]ld.so.1: iodbctest: fatal: relocation error: file /usr/lib/libmyodbc5w.so: symbol init_dynamic_string: referenced symbol not found (0) SQLSTATE=00000
2: SQLDriverConnect = [iODBC][Driver Manager]Specified driver could not be loaded (0) SQLSTATE=IM003
Я просмотрел init_dynamic_string, и он, кажется, находится в my_sys.h
, но каждый случай, который я вижу CMake
пытается включить эту библиотеку. nm
показывает это как неопределенное в результирующей библиотеке:
root@l5-cisswdia:/global/software_build_area/stata# nm /usr/lib/libmyodbc5w.so | grep init_dynamic_string
[589] | 0| 0|NOTY |GLOB |0 |UNDEF |init_dynamic_string
Так что ссылка есть, но не пункт назначения. Я перепробовал все, что мог придумать, чтобы включить его, но мне не повезло.
Вот скрипт настройки, который я использую для mysql-connector-odbc:
#!/bin/tcsh
setenv CC cc
setenv CFLAGS "-DSSL_EXPERIMENTAL -DSSL_ENGINE -KPIC -m64"
setenv CXX CC
setenv CXXFLAGS "-KPIC -m64"
setenv LD_LIBRARY_PATH "/usr/local/lib:$LD_LIBRARY_PATH"
cmake -G "Unix Makefiles" \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_FLAGS="-m64" \
-DODBC_CFLAGS="-m64" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DODBC_INCLUDES="/usr/local/include" \
-DODBC_LIB_DIR="/usr/local/lib" \
.
Есть идеи? Спасибо:)
РЕДАКТИРОВАТЬ:
Я также должен упомянуть, что я попытался использовать GCC вместо SunStudio, и это привело к той же ошибке.