Похоже, вы заинтересованы в динамической загрузке , а не в ссылках вообще.Вот как ODBC находит и использует конкретный драйвер во время выполнения, как то, что вы хотите делать со своим распознавателем.
Вместо того, чтобы гуглить вас по случайной ссылке, я дам вам несколько ключевых слов по динамическим ссылкам:
Основные понятия: "динамическая загрузка" "Независимый от позиции код" soname
Инструменты: LD_DEBUG ldconfig ldd nm objdump
API C для динамической загрузки: dlfcn.h dlopen dlsym dlerror dlclose
Я нашел один хороший учебник, который, как я помню, был полезен, когда я работал с ODBC: http://www.ibm.com/developerworks/library/l-shobj/
Тем не менее, он рекомендует вызывать ld напрямую, что запрещено в gcc.,Вместо этого используйте параметр -shared:
g++ -shared -fPIC foo.c -o libfoo.so.1.0 -Wl,soname,libfoo.so.1
Также: Вам следует искать решения, которые не включают LD_PRELOAD или LD_LIBRARY_PATH, которые в основном являются инструментами отладки, а библиотеки, которые требуют их в работе, имеют недостатки: Почему LD_LIBRARY_PATH плохой LD_LIBRARY_PATH - не ответ LD_LIBRARY_PATH - просто скажите нет
ODBC избегает этого с помощью файла конфигурации odbc.ini, где вы указываете полный файлпуть к .so для использования.