В хедерах, что в libmysqlclient-devel, они есть и указаны как extern. В библиотеках их нет, они туда почему-то не попали, хотя реально они есть. my_free: mysql/mysys/my_malloc.c , строки 124-130 my_malloc: mysql/mysys/my_malloc.c , строки 28-61.
Спасибо, посмотрю; если глянешь mysql-versioning.patch и пришлёшь желаемые доработки, вообще замечательно.
"если глянешь mysql-versioning.patch" Здесь я, увы, не знаток. Знаю, что раньше от них был толк, но с нашим set-versions не будет ли это излишним?
"и пришлёшь желаемые доработки" Тут у меня только грязные хаки выходят, так что сюда бы кого более компетентного...
Короче, перерыл mysql/libmysql/CMakeLists.txt , вводил нужные строки в CLIENT_API_FUNCTIONS, толку никакого. Для себя пока решил локально, но для сизифа это вряд ли подойдёт: =========== начало diff --git a/MySQL.spec b/MySQL.spec index cebec14..fd0738b 100644 --- a/MySQL.spec +++ b/MySQL.spec @@ -306,9 +306,12 @@ export \ CHECK_PID='/bin/kill -0 $$PID >/dev/null 2>/dev/null' \ # +%add_optflags %optflags_shared cmake \ -DCMAKE_VERBOSE_MAKEFILE=ON \ -DCMAKE_INSTALL_PREFIX=%_prefix \ + -DCMAKE_C_FLAGS='%optflags' \ + -DCMAKE_CXX_FLAGS='%optflags' \ -DMYSQL_UNIX_ADDR="%ROOT/mysql.sock" \ -DMYSQL_DATADIR="%ROOT" \ -DMYSQL_USER=mysql \ @@ -363,6 +366,18 @@ install -pD -m600 %SOURCE5 %buildroot%ROOT/my.cnf # Fix libmysqlclient_r symlinks ( cd %buildroot%_libdir + lm1=libmysqlclient.so.*.* + somver=$(echo $lm1 |sed 's|libmysqlclient\.so\.||') + rm -f $lm1 + lm2=libmysqlclient.so.* + sover=$(echo $lm2 |sed 's|libmysqlclient\.so\.||') + rm -f libmysqlclient.so* + gcc -shared -Wl,-soname,libmysqlclient.so.$sover \ + -Wl,--whole-archive libmysqlclient.a -Wl,--no-whole-archive \ + -o libmysqlclient.so.$somver \ + -lcrypto -lssl -lpthread -lrt -ldl -lz -lm -Wl,-z,defs + ln -s libmysqlclient.so.$somver libmysqlclient.so.$sover + ln -s libmysqlclient.so.$sover libmysqlclient.so N="libmysqlclient_r.so" for l in $N.*; do if [ -h $l ]; then =========== конец
(In reply to comment #1) > Спасибо, посмотрю; если глянешь mysql-versioning.patch и пришлёшь желаемые > доработки, вообще замечательно. Добавлять недостающие символы нужно в файл libmysql.version. Впрочем, my_malloc и my_free совершенно не похожи на символы, которые имеет смысл экспортировать. Неужели они кому-то могли понадобиться?
http://git.altlinux.org/beehive/logs/Sisyphus-x86_64/latest/error/mysql-connector-odbc-5.1.8-alt1.1
(In reply to comment #6) > http://git.altlinux.org/beehive/logs/Sisyphus-x86_64/latest/error/mysql-connector-odbc-5.1.8-alt1.1 stringutil.c:127:5: error: too many arguments to function 'my_free' - пакету mysql-connector-odbc нужен мейнтейнер.
"пакету mysql-connector-odbc нужен мейнтейнер" Скорее, автор. Потому как перелопачивать весь этот пакет (а вызовы my_malloc/my_free там часто и в разных местах) если и найдётся мейнтейнер, то только такой, кто вольётся в апстрим :)
Ситуацию можно упростить, если есть ответы на вот такие два вопроса: 1. чем сейчас принято заменять my_malloc и my_free ? 2. зачем прятать подобные символы в библиотеке от использующих её функционал клиентов?
"нужен мейнтейнер" http://git.altlinux.org/people/real/packages/mysql-connector-odbc.git Всё упёрлось в отсутствие нужных функций в реализации mysql.
(In reply to comment #10) > Всё упёрлось в отсутствие нужных функций в реализации mysql. Видимо, этот пакет пора отправить на покой, если автор потерялся.