libmaodbc.so был статически связан с libmariadb.so.3. Теперь я динамически связал libmariadb.so.3, и это сработало.
Понятия не имею, была ли связана плохая/несоответствующая библиотека или какие-то другие настройки для связывания были неправильными (возможно, что-то не так в CMakeLists.txt? ). Так что я до сих пор не понимаю первопричину. Но симптом фиксируется.
Параметр -i
GNU sed принимает необязательный аргумент, который представляет собой суффикс, используемый для резервного копирования. Итак, sed -iE … datfile
заставляет старую версию файла сохраняться как datfileE
. Это не соответствует тому, что вы ожидаете, поскольку вы не передаете параметр -E
, поэтому регулярное выражение анализируется как BRE, а не как ERE.
Исправление заключается в передаче параметров по отдельности:sed -i -E …
или sed -E -i …
.(-Ei
также сработает, если вы ненавидите следующего человека, который будет читать ваш код.)
В качестве альтернативы можно передать суффикс резервной копии (sed -E -i.bak …
), который позволит вашему сценарию работать как с sed FreeBSD, так и с sed GNU. Суффикс необходим для BSD sed, потому что его параметр -i
имеет обязательный аргумент и должен быть в том же аргументе командной строки, что и параметр (без пробела между -i
и .bak
), чтобы GNU sed обрабатывал его как необязательный аргумент для -i
, а не отдельный аргумент для sed
. Это имеет побочный эффект создания файлов резервных копий.