Вы можете построить отсутствующую зависимость tclsh
, загрузив исходный дистрибутив из https://prdownloads.sourceforge.net/tcl/tcl8420-src.zip. Для компиляции исходного кода вам нужен компилятор Си. Я попробовал выпуск Visual Studio для сообщества: https://visualstudio.microsoft.com/vs/
Нажмите кнопку загрузить выпуск сообщества ..
Затем выберите, что установить
Затем нажмите «Установить»
После установки перейдите в меню «Инструменты-> Командная строка-> Командная строка разработчика» и запустите
nmake -f makefile.vc
из подпапки win
извлеченного исходного дистрибутива Tcl (на моем компьютере он был расположен по адресу C:\Users\Bruker\tcl\tcl8.4.20\win
)
Приведенная выше команда nmake
создает новую папку Release_VC13
с исполняемым файлом tclsh84.exe
. Обратите внимание, что имя исполняемого файла не tclsh.exe
.
Теперь добавьте папку исполняемого файла в системную переменную среды PATH
: C:\Users\Bruker\tcl\tcl8.4.20\win\Release_VC13
, затем закройте командную строку и откройте заново, чтобы обновить параметры пути.
Попробуйте ввести tclsh84
, и вы должны получить командную строку оболочки tcl с ведущей %
подсказкой. Затем введите exit
для выхода из оболочки tcl.
Следующая проблема - установить модуль Tcl
с помощью Strawberry Perl. Сначала пытаемся запустить:
> cpan Tcl
[...]
'tclsh' is not recognized as an internal or external command,
operable program or batch file.
error starting tclsh: $?=256; $!=
No 'Makefile' created VKON/Tcl-1.27.tar.gz
C:\Strawberry\perl\bin\perl.exe Makefile.PL -- NOT OK
Stopping: 'install' failed for 'Tcl'.
Проблема в том, что исполняемый файл называется не tclsh
, а tclsh84
(см. Выше).
Следующее, что я сделал, это загрузил исходный дистрибутив для модуля Tcl
:
> cpan -g Tcl
Затем извлек скачанный файл Tcl-1.27.tar.gz
и перешел в исходный каталог дистрибутива. Изучив Makefile.PL
, я обнаружил, что Makefile.PL
принял аргумент командной строки --tclsh
, который дал имя команды оболочки tcl. Поэтому я попытался:
> perl Makefile.PL --tclsh=tclsh84
, и теперь это работало нормально. Затем я попытался скомпилировать с gmake
(который поставляется с дистрибутивом Strawberry Perl):
> gmake
Это также сработало, но запустить gmake test
не удалось, а также установить и протестировать модуль:
> gmake install
> perl -MTcl -e1
failed dlopen(C:/Users/Bruker/tcl/tcl8.4.20/win/Release_VC13/tcl84.dll,...);
failed dlopen(./tcl84.dll,...);
failed dlopen(tcl84.dll,...);
trying dlopen(tcl89.dll,...)
trying dlopen(tcl88.dll,...)
trying dlopen(tcl87.dll,...)
trying dlopen(tcl86.dll,...)
trying dlopen(tcl85.dll,...)
trying dlopen(tcl84.dll,...)
trying dlopen(tcl83.dll,...)
trying dlopen(tcl82.dll,...)
trying dlopen(tcl81.dll,...)
trying dlopen(tcl80.dll,...)
failed all posible tcl vers 8.x from 9 down to 0 at C:/Strawberry/perl/lib/XSLoader.pm line 111.
Failed to load Tcl dll! at C:/Strawberry/perl/lib/XSLoader.pm line 111.
Unable to initialize Tcl at C:/Strawberry/perl/lib/XSLoader.pm line 111.
Compilation failed in require.
BEGIN failed--compilation aborted.
Я планирую вернуться к этой проблеме позже и продолжить расследование.