компиляция — Каков правильный метод компиляции приложения c ++ с TCL / TK8.4, чтобы его можно было запустить в системе с TCL / TK8.5?

У меня есть приложение C ++, которое выступает в качестве переводчика для TCL / TK.
TMS был скомпилирован с TCL / TK8.4.

Мне нужно запустить это в среде, в которой установлен только TCL / TK8.5.

Когда я запускаю приложение в системе TCL / TK8.5, я получаю эту ошибку:

tms: error while loading shared libraries: libtk8.4.so: cannot open shared object file: No such file or directory

tms компилируется на Linux-машине с использованием флагов g ++ и -ltcl8.4 и -ltk8.4.

0

Решение

Если вы связали приложение с библиотеками 8.4, то для запуска приложения вам необходимо иметь 8.4 общих объектов. Вы должны отправить свой исполняемый файл плюс все библиотеки и сценарии tcl, необходимые в виде пакета.

Сказав это — на самом деле можно делать то, о чем вы говорите. Механизм заглушек, используемый для того, чтобы позволить расширениям Tcl загружаться в высокоуровневые версии tcl, по сравнению с которыми они были скомпилированы, может быть расширен для использования в исполняемых файлах, в которых размещается интерпретатор Tcl. Увидеть Tcl Wiki для более подробного обсуждения, но вы можете организовать динамическую загрузку разделяемой библиотеки Tcl и инициализировать ее с помощью механизма заглушек. На этой странице есть пример. Однако это может привести к проблемам, когда в установленной версии Tcl отсутствует то, что ожидает ваше приложение. Если вы придерживаетесь стандартного маршрута для встраивания Tcl, куда вы отправляете свое приложение, а также все необходимые файлы Tcl, вы можете изолировать свое приложение от системных изменений.

Другая возможность состоит в том, чтобы связать ваше приложение с библиотекой dll / shared, которая включает в себя виртуальную файловую систему, которая содержит все поддерживающие сценарии Tcl. Первоначально упоминается как stardll а также как базовый комплект библиотеки dll. Это позволяет связать ваш исполняемый файл с одним dll / .so, который содержит всю зависимую от Tcl информацию.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]