Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Интерфейс к spidermonkey движку  (Прочитано 30825 раз)
0 Пользователей и 1 Гость смотрят эту тему.
perl6
Помогающий

ru
Offline Offline

« : 08-03-2015 19:18 » 

Доброго времени суток, господа. Никто не пробовал компилировать под Windows данный модуль, он вообще под виндой компилировался хоть кем то? На cpan-е не увидел ни одной успешной сборки.....  Жаль
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 09-03-2015 15:23 » 

Компилировать под винду — то еще «удовольствие».

В changeslog сказано, что поддержка win32 есть с 2004-го года.
В чем сложность сборки?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
perl6
Помогающий

ru
Offline Offline

« Ответ #2 : 09-03-2015 15:41 » 

Компилировать под винду — то еще «удовольствие».
Спасибо, что ответили, уважаемый RXL. Да, действительно, есть определенные проблемы, видимо, из-за специфичности движка что ли.

В changeslog сказано, что поддержка win32 есть с 2004-го года.
В чем сложность сборки?
Сложность сборки, на мой взгляд, в dmake-e.
Причем, даже на stable/testing версии дебиан данный модуль не всегда собирается успешно, в зависимости от версии компилятора.
По поводу винды, лично мной установлено, что на ранних версиях ошибка возникает на финальной стадии линковки, а на новейшей на текущий момент библиотеке libmoz185 и последней версии модуля 1.16 даже до линковки не доходит, сыпятся ошибки в консоль во время компиляции.
Но, в ppm-репозиториях bribes есть успешно откомпилированная версия данного модуля под винду, правда, для perl версии 5.10. К сожалению, уж слишком старая версия, для других , более свежих версий, видать и у них не получилось.  Жаль

Добавлено через 1 день, 2 часа, 14 минут и 31 секунду:
Итак, продолжаю свои попытки откомпилировать под винду модуль JavaScript.pm. Автор модуля, некий Клейс Джейкобсон, то ли подзабил на разработку, то ли шибко занят, т.к. последняя версия на данный момент - 1.16 датирована аж февралем 2010 г.
К слову, именно к движку js spidermonkey есть еще один модуль, позволяющий связать перл и яваскрипт, модуль так и называется JavaScript:Spidermonkey. Я его под винду хоть и не без геморроя, но все же смог откомпилировать и даже удачно отработал пример с cpan'a, но модуль этот уж больно замысловатый, корявый какой-то api реализует...

C:\JavaScript-SpiderMonkey-0.21>perl Makefile.PL --js_lib_dir C:\\js\\src --js_l
ib_name js32
JS_LIB_DIR:  C:\\js\\src
JS_INCL_DIR: C:\\js\\src
JS_LIB_NAME: js32
Checking if your kit is complete...
Warning: the following files are missing in your kit:
        INSTALL
Please inform the author.
Warning (mostly harmless): No library found for -lmoldname
Warning (mostly harmless): No library found for -lkernel32
Warning (mostly harmless): No library found for -luser32
Warning (mostly harmless): No library found for -lgdi32
Warning (mostly harmless): No library found for -lwinspool
Warning (mostly harmless): No library found for -lcomdlg32
Warning (mostly harmless): No library found for -ladvapi32
Warning (mostly harmless): No library found for -lshell32
Warning (mostly harmless): No library found for -lole32
Warning (mostly harmless): No library found for -loleaut32
Warning (mostly harmless): No library found for -lnetapi32
Warning (mostly harmless): No library found for -luuid
Warning (mostly harmless): No library found for -lws2_32
Warning (mostly harmless): No library found for -lmpr
Warning (mostly harmless): No library found for -lwinmm
Warning (mostly harmless): No library found for -lversion
Warning (mostly harmless): No library found for -lodbc32
Warning (mostly harmless): No library found for -lodbccp32
Generating a dmake-style Makefile
Writing Makefile for JavaScript::SpiderMonkey
Writing MYMETA.yml and MYMETA.json

C:\JavaScript-SpiderMonkey-0.21>dmake
cp SpiderMonkey.pm blib\lib\JavaScript\SpiderMonkey.pm
Running Mkbootstrap for JavaScript::SpiderMonkey ()
"C:\strawberry\perl\bin\perl.exe" -MExtUtils::Command -e chmod -- 644 "SpiderMon
key.bs"
"C:\strawberry\perl\bin\perl.exe" "C:\strawberry\perl\lib\ExtUtils\xsubpp"  -typ
emap "C:\strawberry\perl\lib\ExtUtils\typemap" -typemap "typemap"  SpiderMonkey.
xs > SpiderMonkey.xsc && "C:\strawberry\perl\bin\perl.exe" -MExtUtils::Command -
e mv -- SpiderMonkey.xsc SpiderMonkey.c
gcc -c  -IC:\\js\\src   -s -O2 -DWIN32 -DHAVE_DES_FCRYPT -DUSE_SITECUSTOMIZE -DP
ERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fno-strict-aliasing -DPERL_MSVCRT_READ
FIX -s -O2        -DVERSION=\"0.21\"    -DXS_VERSION=\"0.21\"  "-IC:\strawberry\
perl\lib\CORE"  -DXP_WIN SpiderMonkey.c
In file included from SpiderMonkey.xs:14:0:
C:\strawberry\perl\lib\CORE/XSUB.h:565:0: warning: "popen" redefined [enabled by
 default]
In file included from C:\strawberry\perl\lib\CORE/win32.h:72:0,
                 from C:\strawberry\perl\lib\CORE/win32thread.h:4,
                 from C:\strawberry\perl\lib\CORE/perl.h:2819,
                 from SpiderMonkey.xs:13:
c:\strawberry\c\bin\../lib/gcc/i686-w64-mingw32/4.7.3/../../../../i686-w64-mingw
32/include/stdio.h:450:0: note: this is the location of the previous definition
In file included from SpiderMonkey.xs:14:0:
C:\strawberry\perl\lib\CORE/XSUB.h:566:0: warning: "pclose" redefined [enabled b
y default]
In file included from C:\strawberry\perl\lib\CORE/win32.h:72:0,
                 from C:\strawberry\perl\lib\CORE/win32thread.h:4,
                 from C:\strawberry\perl\lib\CORE/perl.h:2819,
                 from SpiderMonkey.xs:13:
c:\strawberry\c\bin\../lib/gcc/i686-w64-mingw32/4.7.3/../../../../i686-w64-mingw
32/include/stdio.h:451:0: note: this is the location of the previous definition
"C:\strawberry\perl\bin\perl.exe" -MExtUtils::Mksymlists \
     -e "Mksymlists('NAME'=>\"JavaScript::SpiderMonkey\", 'DLBASE' => 'SpiderMon
key', 'DL_FUNCS' => {  }, 'FUNCLIST' => [], 'IMPORTS' => {  }, 'DL_VARS' => []);
"
dlltool --def SpiderMonkey.def --output-exp dll.exp
g++ -o blib\arch\auto\JavaScript\SpiderMonkey\SpiderMonkey.dll -Wl,--base-file -
Wl,dll.base -mdll -s -L"C:\strawberry\perl\lib\CORE" -L"C:\strawberry\c\lib" Spi
derMonkey.o   "C:\strawberry\perl\lib\CORE\libperl510.a" "js32.lib" dll.exp
dlltool --def SpiderMonkey.def --base-file dll.base --output-exp dll.exp
g++ -o blib\arch\auto\JavaScript\SpiderMonkey\SpiderMonkey.dll -mdll -s -L"C:\st
rawberry\perl\lib\CORE" -L"C:\strawberry\c\lib" SpiderMonkey.o   "C:\strawberry\
perl\lib\CORE\libperl510.a" "js32.lib" dll.exp
"C:\strawberry\perl\bin\perl.exe" -MExtUtils::Command -e chmod -- 755 blib\arch\
auto\JavaScript\SpiderMonkey\SpiderMonkey.dll

C:\JavaScript-SpiderMonkey-0.21>dmake install
Files found in blib\arch: installing files in blib\lib into architecture depende
nt library tree
Installing C:\strawberry\perl\site\lib\auto\JavaScript\SpiderMonkey\SpiderMonkey
.dll
Installing C:\strawberry\perl\site\lib\JavaScript\SpiderMonkey.pm
Appending installation info to C:\strawberry\perl\lib/perllocal.pod

C:\JavaScript-SpiderMonkey-0.21>cd
C:\JavaScript-SpiderMonkey-0.21

C:\JavaScript-SpiderMonkey-0.21>cd\

C:\>perl js.pl
URL is  http://www.aol.com

Перл взял версии 5.10 , компилятор под винду - gcc 4.7.3. Саму библиотеку от mozill'ы скомпилировал в visual studio 2012, версию взял не слишком старую, но и не новую (с последней у многих проблемы даже на *.nix системах).

Скомпилировать JavaScript.pm, на мой взгляд, более удобный, по прежнему не удается.

Добавлено через 2 часа, 53 минуты и 9 секунд:
В общем, не собирается ни под какой версией перла, даже версия компилятора не играет роли. Вот, что выдает в консоль...  Жаль

C:\>cd J*

C:\JavaScript-1.16>perl Makefile.PL
Is your SpiderMonkey compiled with JS_THREADSAFE (most things will fail if you a
nswer wrong)? [y/N]  n
Is your SpiderMonkey compiled with support for unicode (t/23-unicode.t will fail
 if you answer wrong) ? [y/N] [N] y
Do you want support for E4X (requires SpiderMonkey > 1.5) ? [y/N] [N] y
Checking if your kit is complete...
Looks good
Generating a dmake-style Makefile
Writing Makefile for JavaScript
Writing MYMETA.yml and MYMETA.json

C:\JavaScript-1.16>dmake
cp PJS_Property.h blib\arch\auto\JavaScript\PJS_Property.h
cp PJS_Function.h blib\arch\auto\JavaScript\PJS_Function.h
cp PJS_Script.h blib\arch\auto\JavaScript\PJS_Script.h
cp PJS_PerlHash.h blib\arch\auto\JavaScript\PJS_PerlHash.h
cp lib/JavaScript/Boxed.pm blib\lib\JavaScript\Boxed.pm
cp JavaScript.h blib\arch\auto\JavaScript\JavaScript.h
cp PJS_PerlArray.h blib\arch\auto\JavaScript\PJS_PerlArray.h
cp PJS_Call.h blib\arch\auto\JavaScript\PJS_Call.h
cp PJS_Context.h blib\arch\auto\JavaScript\PJS_Context.h
cp PJS_Common.h blib\arch\auto\JavaScript\PJS_Common.h
cp JavaScript_Env.h blib\arch\auto\JavaScript\JavaScript_Env.h
cp lib/JavaScript/Error.pm blib\lib\JavaScript\Error.pm
cp PJS_Types.h blib\arch\auto\JavaScript\PJS_Types.h
cp PJS_Exceptions.h blib\arch\auto\JavaScript\PJS_Exceptions.h
cp lib/JavaScript/Context.pm blib\lib\JavaScript\Context.pm
cp PJS_Class.h blib\arch\auto\JavaScript\PJS_Class.h
cp PJS_PerlSub.h blib\arch\auto\JavaScript\PJS_PerlSub.h
cp lib/JavaScript.pm blib\lib\JavaScript.pm
cp PJS_TypeConversion.h blib\arch\auto\JavaScript\PJS_TypeConversion.h
cp PJS_Runtime.h blib\arch\auto\JavaScript\PJS_Runtime.h
cp lib/Test/JavaScript/More.pm blib\lib\Test\JavaScript\More.pm
cp lib/JavaScript/PerlHash.pm blib\lib\JavaScript\PerlHash.pm
cp lib/JavaScript/Runtime.pm blib\lib\JavaScript\Runtime.pm
cp lib/JavaScript/Function.pm blib\lib\JavaScript\Function.pm
cp typemap blib\arch\auto\JavaScript\typemap
cp lib/JavaScript/PerlArray.pm blib\lib\JavaScript\PerlArray.pm
cp lib/JavaScript/Generator.pm blib\lib\JavaScript\Generator.pm
cp lib/JavaScript/Script.pm blib\lib\JavaScript\Script.pm
Running Mkbootstrap for JavaScript ()
C:\Perl\bin\perl.exe -MExtUtils::Command -e chmod -- 644 JavaScript.bs
C:\Perl\bin\perl.exe C:\Perl\lib\ExtUtils\xsubpp  -typemap C:\Perl\lib\ExtUtils\
typemap -typemap typemap  JavaScript.xs > JavaScript.xsc && C:\Perl\bin\perl.exe
 -MExtUtils::Command -e mv -- JavaScript.xsc JavaScript.c
gcc -c          -s -O2 -DWIN32 -DPERL_TEXTMODE_SCRIPTS -DUSE_SITECUSTOMIZE -DPER
L_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -fno-strict-aliasing -mms-bi
tfields -s -O2    -DVERSION=\"1.16\"    -DXS_VERSION=\"1.16\"  "-IC:\Perl\lib\CO
RE"   JavaScript.c
JavaScript.xs:7:19: warning: extra tokens at end of #ifndef directive [enabled b
y default]
JavaScript.xs: In function 'XS_JavaScript__Context_jsc_ptr':
JavaScript.xs:128:18: warning: cast from pointer to integer of different size [-
Wpointer-to-int-cast]
JavaScript.xs: In function 'XS_JavaScript__Context_jsc_call':
JavaScript.xs:353:13: warning: passing argument 2 of 'PJS_call_javascript_functi
on' makes integer from pointer without a cast [enabled by default]
PJS_Call.h:30:1: note: expected 'jsval' but argument is of type 'struct JSObject
 *'
gcc -c          -s -O2 -DWIN32 -DPERL_TEXTMODE_SCRIPTS -DUSE_SITECUSTOMIZE -DPER
L_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -fno-strict-aliasing -mms-bi
tfields -s -O2    -DVERSION=\"1.16\"    -DXS_VERSION=\"1.16\"  "-IC:\Perl\lib\CO
RE"   PJS_Call.c
PJS_Call.c:11:5: warning: 'PJS_call_perl_method' redeclared without dllimport at
tribute: previous dllimport ignored [-Wattributes]
PJS_Call.c:40:5: warning: 'perl_call_sv_with_jsvals_rsv' redeclared without dlli
mport attribute: previous dllimport ignored [-Wattributes]
PJS_Call.c:113:5: warning: 'perl_call_sv_with_jsvals' redeclared without dllimpo
rt attribute: previous dllimport ignored [-Wattributes]
PJS_Call.c:124:8: warning: 'PJS_call_javascript_function' redeclared without dll
import attribute: previous dllimport ignored [-Wattributes]
PJS_Call.c:161:8: warning: 'perl_call_jsfunc' redeclared without dllimport attri
bute: previous dllimport ignored [-Wattributes]
gcc -c          -s -O2 -DWIN32 -DPERL_TEXTMODE_SCRIPTS -DUSE_SITECUSTOMIZE -DPER
L_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -fno-strict-aliasing -mms-bi
tfields -s -O2    -DVERSION=\"1.16\"    -DXS_VERSION=\"1.16\"  "-IC:\Perl\lib\CO
RE"   PJS_Class.c
PJS_Class.c:14:16: warning: 'PJS_get_method_by_name' redeclared without dllimpor
t attribute: previous dllimport ignored [-Wattributes]
PJS_Class.c:30:15: warning: 'PJS_get_property_by_id' redeclared without dllimpor
t attribute: previous dllimport ignored [-Wattributes]
PJS_Class.c:49:6: warning: 'PJS_free_class' redeclared without dllimport attribu
te: previous dllimport ignored [-Wattributes]
PJS_Class.c:91:6: warning: 'PJS_bind_class' redeclared without dllimport attribu
te: previous dllimport ignored [-Wattributes]
PJS_Class.c:175:6: warning: 'PJS_store_class' redeclared without dllimport attri
bute after being referenced with dll linkage [enabled by default]
PJS_Class.c:194:6: warning: 'PJS_finalize' redeclared without dllimport attribut
e after being referenced with dll linkage [enabled by default]
PJS_Class.c:205:8: warning: 'PJS_construct_perl_object' redeclared without dllim
port attribute after being referenced with dll linkage [enabled by default]
PJS_Class.c:243:17: warning: 'PJS_add_class_properties' redeclared without dllim
port attribute after being referenced with dll linkage [enabled by default]
PJS_Class.c:310:17: warning: 'PJS_add_class_functions' redeclared without dllimp
ort attribute after being referenced with dll linkage [enabled by default]
PJS_Class.c:377:8: warning: 'PJS_invoke_perl_object_method' redeclared without d
llimport attribute after being referenced with dll linkage [enabled by default]
PJS_Class.c:442:1: warning: 'PJS_GetClassName' redeclared without dllimport attr
ibute: previous dllimport ignored [-Wattributes]
PJS_Class.c:451:1: warning: 'PJS_GetClassPackage' redeclared without dllimport a
ttribute: previous dllimport ignored [-Wattributes]
gcc -c          -s -O2 -DWIN32 -DPERL_TEXTMODE_SCRIPTS -DUSE_SITECUSTOMIZE -DPER
L_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -fno-strict-aliasing -mms-bi
tfields -s -O2    -DVERSION=\"1.16\"    -DXS_VERSION=\"1.16\"  "-IC:\Perl\lib\CO
RE"   PJS_Context.c
PJS_Context.c:25:16: warning: 'PJS_GetFunctionByName' redeclared without dllimpo
rt attribute: previous dllimport ignored [-Wattributes]
PJS_Context.c:41:1: warning: 'PJS_GetClassByName' redeclared without dllimport a
ttribute: previous dllimport ignored [-Wattributes]
PJS_Context.c:57:1: warning: 'PJS_GetClassByPackage' redeclared without dllimpor
t attribute: previous dllimport ignored [-Wattributes]
PJS_Context.c:75:15: warning: 'PJS_CreateContext' redeclared without dllimport a
ttribute: previous dllimport ignored [-Wattributes]
PJS_Context.c:139:6: warning: 'PJS_DestroyContext' redeclared without dllimport
attribute after being referenced with dll linkage [enabled by default]
PJS_Context.c:169:1: warning: 'PJS_DefineFunction' redeclared without dllimport
attribute: previous dllimport ignored [-Wattributes]
PJS_Context.c:202:8: warning: 'PJS_branch_handler' redeclared without dllimport
attribute: previous dllimport ignored [-Wattributes]
gcc -c          -s -O2 -DWIN32 -DPERL_TEXTMODE_SCRIPTS -DUSE_SITECUSTOMIZE -DPER
L_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -fno-strict-aliasing -mms-bi
tfields -s -O2    -DVERSION=\"1.16\"    -DXS_VERSION=\"1.16\"  "-IC:\Perl\lib\CO
RE"   PJS_Exceptions.c
gcc -c          -s -O2 -DWIN32 -DPERL_TEXTMODE_SCRIPTS -DUSE_SITECUSTOMIZE -DPER
L_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -fno-strict-aliasing -mms-bi
tfields -s -O2    -DVERSION=\"1.16\"    -DXS_VERSION=\"1.16\"  "-IC:\Perl\lib\CO
RE"   PJS_Function.c
In file included from PJS_Function.h:14:0,
                 from PJS_Function.c:4:
C:\Perl\lib\CORE/perl.h:174:0: warning: "aTHX" redefined [enabled by default]
C:\Perl\lib\CORE/XSUB.h:430:0: note: this is the location of the previous defini
tion
In file included from PJS_Function.h:14:0,
                 from PJS_Function.c:4:
C:\Perl\lib\CORE/perl.h:1464:0: warning: "socketpair" redefined [enabled by defa
ult]
C:\Perl\lib\CORE/XSUB.h:635:0: note: this is the location of the previous defini
tion
In file included from C:\Perl\lib\CORE/win32.h:383:0,
                 from C:\Perl\lib\CORE/win32thread.h:4,
                 from C:\Perl\lib\CORE/perl.h:2869,
                 from PJS_Function.h:14,
                 from PJS_Function.c:4:
C:\Perl\lib\CORE/sys/socket.h:210:16: error: redefinition of 'struct Perl_fd_set
'
c:\perl\site\lib\auto\mingw\bin\../lib/gcc/i686-w64-mingw32/4.6.3/../../../../i6
86-w64-mingw32/include/psdk_inc/_fd_types.h:15:16: note: originally defined here

C:\Perl\lib\CORE/sys/socket.h:212:6: error: conflicting types for 'Perl_fd_set'
c:\perl\site\lib\auto\mingw\bin\../lib/gcc/i686-w64-mingw32/4.6.3/../../../../i6
86-w64-mingw32/include/psdk_inc/_fd_types.h:19:3: note: previous declaration of
'Perl_fd_set' was here
PJS_Function.c:8:6: warning: 'PJS_free_JSFunctionSpec' redeclared without dllimp
ort attribute: previous dllimport ignored [-Wattributes]
PJS_Function.c:23:8: warning: 'PJS_invoke_perl_function' redeclared without dlli
mport attribute: previous dllimport ignored [-Wattributes]
PJS_Function.c:44:1: warning: 'PJS_CreateFunction' redeclared without dllimport
attribute: previous dllimport ignored [-Wattributes]
PJS_Function.c:73:6: warning: 'PJS_DestroyFunction' redeclared without dllimport
 attribute: previous dllimport ignored [-Wattributes]
PJS_Function.c:94:1: warning: 'PJS_GetFunctionName' redeclared without dllimport
 attribute: previous dllimport ignored [-Wattributes]
PJS_Function.c:103:1: warning: 'PJS_GetFunctionTarget' redeclared without dllimp
ort attribute: previous dllimport ignored [-Wattributes]
dmake.exe:  Error code 129, while making 'PJS_Function.o'
« Последнее редактирование: 10-03-2015 17:57 от perl6 » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 10-03-2015 23:50 » 

Какой дистрибутив перла?
GCC из комплекта mingw?

Цитата
In file included from C:\Perl\lib\CORE/win32.h:383:0,
                 from C:\Perl\lib\CORE/win32thread.h:4,
                 from C:\Perl\lib\CORE/perl.h:2869,
                 from PJS_Function.h:14,
                 from PJS_Function.c:4:
C:\Perl\lib\CORE/sys/socket.h:210:16: error: redefinition of 'struct Perl_fd_set
'
c:\perl\site\lib\auto\mingw\bin\../lib/gcc/i686-w64-mingw32/4.6.3/../../../../i6
86-w64-mingw32/include/psdk_inc/_fd_types.h:15:16: note: originally defined here

C:\Perl\lib\CORE/sys/socket.h:212:6: error: conflicting types for 'Perl_fd_set'
c:\perl\site\lib\auto\mingw\bin\../lib/gcc/i686-w64-mingw32/4.6.3/../../../../i6
86-w64-mingw32/include/psdk_inc/_fd_types.h:19:3: note: previous declaration of
'Perl_fd_set' was here

C:\Perl\lib\CORE/sys/socket.h конфликтует сам с собой?

Предполагаю путаницу заголовков. Одни в Perl, другие в mingw.

Добавлено через 18 минут и 4 секунды:
https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey
Новейшая версия - 31.

https://metacpan.org/pod/JavaScript::SpiderMonkey
Новейшая версия - 0.21

Цитата
на новейшей на текущий момент библиотеке libmoz185 и последней версии модуля 1.16 даже до линковки не доходит

О чем тогда тут речь?
« Последнее редактирование: 11-03-2015 00:10 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
perl6
Помогающий

ru
Offline Offline

« Ответ #4 : 11-03-2015 14:35 » 

Спасибо за ответ, уважаемый RXL, итак, обо всем по порядку
Цитата
Какой дистрибутив перла?
GCC из комплекта mingw?
Дистрибутив 5.10, скачан с сайта стрейнбери, упор делал на него, т.к. ребята из bribes именно под него как-то умудрились откомпилировать данный модуль http://www.bribes.org/perl/ppm/JavaScript.ppd.
Я надеялся, что смогу на не нем скопилировать модуль и, потом сравнив, понять, почему не собирается на последней версии perl 5.20
GCC из комплекта perl стрейнбери, шел вместе с дистрибутивом perl'a.

Цитата
C:\Perl\lib\CORE/sys/socket.h конфликтует сам с собой?
Предполагаю путаницу заголовков. Одни в Perl, другие в mingw.
Почему тогда с компиляцией других модулей не возникает проблем, именно компиляцией, а не там, где просто pm файлы копируются при установке. Там похожие проблемы просто сыпятся в warning's, а не вылетают в ошибку, взять тот же модуль Encode.

Цитата
Новейшая версия - 31.
Это видимо комбайн от mozilla, там уже все готовое для сборки firefox'a. А если поковырятся в его недрах, то можно наткнутся непосредственно на сам движок, он лежит в папке js, его отдельно можно качнуть с сайта http://ftp.mozilla.org/pub/mozilla.org/js/
Тут последняя версия (релизная) - 1.8.5, под нее модуль к perl'y не собрался даже на *.nix системе, версия 1.8.0 на винде у меня тоже с пердежом собралась, вот я и остановился на версии движка 1.7, он нормально собрался на обеих платформах (ubuntu и домашней - win8).

Цитата
Новейшая версия - 0.21
Это я просто проверял возможность компиляции на винде, данный модуль уж больно замысловатый, меня интересует вот этот, где все просто и понятно.      https://metacpan.org/pod/JavaScript


Вот, залил откомпилированную версию js-движка на обменник rghost, там в папке src заголовки, а в папке Win* - библиотеки.
http://rghost.ru/6FCP895vK

RXL, если есть возможность, просьба взгляните
« Последнее редактирование: 11-03-2015 20:33 от perl6 » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 14-03-2015 21:41 » 

К сожалению, с временем очень того.

Под виндой не извращаюсь — пробовал под CentOS 5. Либа mozjs собралась без проблем. Заглянул в модуль JavaScript — странно все. Почему он ожидает заголовки без пути "js/"... Попробовал указать в Makefile.PL (пипец какой древний) путь, но ему стало плохо от современного gcc. Сдается мне, проще найти другой модуль для js. Этот морально устарел еще 10 лет назад.

Странная ругань при сборке: как будто компилятор C пытается вникнуть в код C++. И плюс не найденные заголовки.
« Последнее редактирование: 14-03-2015 21:58 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 14-03-2015 22:01 » 

https://metacpan.org/pod/JavaScript::V8
Может это интереснее будет?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 14-03-2015 22:03 » 

Вот это собирается на ура: https://metacpan.org/pod/JavaScript::Shell
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
perl6
Помогающий

ru
Offline Offline

« Ответ #8 : 15-03-2015 00:32 » 

Цитата
К сожалению, с временем очень того.
Я понимаю, время такое, никто ничего не делает просто так, но все равно - спасибо, что находите время для ответов в топике.

Цитата
Под виндой не извращаюсь — пробовал под CentOS 5. Либа mozjs собралась без проблем. Заглянул в модуль JavaScript — странно все. Почему он ожидает заголовки без пути "js/"... Попробовал указать в Makefile.PL (пипец какой древний) путь, но ему стало плохо от современного gcc. Сдается мне, проще найти другой модуль для js. Этот морально устарел еще 10 лет назад.

Странная ругань при сборке: как будто компилятор C пытается вникнуть в код C++. И плюс не найденные заголовки.
Да, модуль действительно староват, но куда деваться, но была надежда заставить его собраться под виндой....

Цитата
Может это интереснее будет?
Движок v8 от гугла действительно поинтереснее, с точки зрения производительности и довольно обширной документации, вот только, опять та же беда - под виндой JavaSript:V8 не компилируется, хотя саму либу я успешно собирал на Windows и с помощью scons (не самую свежую, не охото было лишние телодвижения делать), так и последнюю, 3.30, поставив таки depot_tools от гугла, тоже при попытке собрать JavaSript:V8 лезут ошибки....
« Последнее редактирование: 15-03-2015 00:36 от perl6 » Записан
perl6
Помогающий

ru
Offline Offline

« Ответ #9 : 15-03-2015 00:37 » 

Вот это собирается на ура: https://metacpan.org/pod/JavaScript::Shell
Проблема в том, что это доступ к шеллу, а хочется - именно к движку, к либе...
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 15-03-2015 01:25 » 

JavaScript::Lite у меня ругается аналогично JavaScript.


JavaScript::SpiderMonkey — ругается, но иначе.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 15-03-2015 15:17 » 

А какие требования к модулю?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
perl6
Помогающий

ru
Offline Offline

« Ответ #12 : 15-03-2015 15:24 » 

А какие требования к модулю?
Да, собственно, особых то и нет. Наличие мало мальски путной документации, понятные примеры. JavaScript:V8 вполне меня устраивает, я бы, даже сказал, гораздо привлекательнее, но, не собирается под виндой, сейчас вот опять попробую посидеть.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 15-03-2015 15:30 » 

Улыбаюсь
Спрошу иначе: какие требования к интерфейсу?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
perl6
Помогающий

ru
Offline Offline

« Ответ #14 : 15-03-2015 15:48 » 

Улыбаюсь
Спрошу иначе: какие требования к интерфейсу?
Такие же, планирую парсер создать, ибо много довольно удачных примеров видел, почти все или на движке от гугла, или - от мозиллы. Используются модули JavaScript:V8 или JavaScript, да я и сам заметил, что тот же JavaScript::SpiderMonkey - тяжеловат для понимания.
Например, взять те же примеры с cpan'a
Код: (Perl)
my $context = JavaScript::V8::Context->new();

  $context->bind_function(write => sub { print @_ });

  $context->eval(q/
    write ("Privet!!!");
  /);
Подрубились к движку, вывели на печать, выполнили js - функцию. В 3-х строчках грубо говоря все решение.

А тут, модуль JavaScript:SpiderMoney, строк явно больше, да и судя по отзывам, мало у кого путем получается с ним разобраться досконально

Код: (Perl)
use JavaScript::SpiderMonkey;

    my $js = JavaScript::SpiderMonkey->new();

    $js->init();  # Initialize Runtime/Context

                  # Define a perl callback for a new JavaScript function
    $js->function_set("print_to_perl", sub { print "@_\n"; });

                  # Create a new (nested) object and a property
    $js->property_by_path("document.location.href");

                  # Execute some code
    my $rc = $js->eval(q!
        document.location.href = append("http://", "www.aol.com");

        print_to_perl("URL is ", document.location.href);

        function append(first, second) {
             return first + second;
        }
    !);

        # Get the value of a property set in JS
    my $url = $js->property_get("document.location.href");

    $js->destroy();

JavaScript::Lite у меня ругается аналогично JavaScript.
Под *.nix собралось без проблем (заголовки и либу ручками перенес в соотв.каталоги), под виндой скорее всего опять вылезут ошибки
Код:
cpan[1]> notest install JavaScript::Lite
Reading '/root/.cpan/Metadata'
  Database was generated on Sun, 15 Mar 2015 14:29:02 GMT
Running install for module 'JavaScript::Lite'
Fetching with LWP:
http://cpan.webdesk.ru/authors/id/C/CR/CRAKRJACK/JavaScript-Lite-0.04.tar.gz
Fetching with LWP:
http://cpan.webdesk.ru/authors/id/C/CR/CRAKRJACK/CHECKSUMS
Checksum for /root/.cpan/sources/authors/id/C/CR/CRAKRJACK/JavaScript-Lite-0.04.tar.gz ok
Scanning cache /root/.cpan/build for sizes
............................................................................DONE
Configuring C/CR/CRAKRJACK/JavaScript-Lite-0.04.tar.gz with Makefile.PL
Checking if your kit is complete...
Looks good
Warning (mostly harmless): No library found for -lmozjs
Warning (mostly harmless): No library found for -lnspr4
Generating a Unix-style Makefile
Writing Makefile for JavaScript::Lite
Writing MYMETA.yml and MYMETA.json
  CRAKRJACK/JavaScript-Lite-0.04.tar.gz
  /usr/bin/perl Makefile.PL INSTALLDIRS=site -- OK
Running make for C/CR/CRAKRJACK/JavaScript-Lite-0.04.tar.gz
cp lib/JavaScript/Lite.pm blib/lib/JavaScript/Lite.pm
Running Mkbootstrap for JavaScript::Lite ()
chmod 644 "Lite.bs"
"/usr/bin/perl" "/usr/share/perl/5.14/ExtUtils/xsubpp"  -typemap "/usr/share/perl/5.14/ExtUtils/typemap" -typemap "typemap"  Lite.xs > Lite.xsc && mv Lite.xsc Lite.c
Please specify prototyping behavior for Lite.xs (see perlxs manual)
cc -c  -I. -I/usr/include/mozjs -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fstack-protector -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g   -DVERSION=\"0.04\" -DXS_VERSION=\"0.04\" -fPIC "-I/usr/lib/perl/5.14/CORE"  -Wall -Werror Lite.c
rm -f blib/arch/auto/JavaScript/Lite/Lite.so
LD_RUN_PATH="/usr/lib/../lib" cc  -shared -L/usr/local/lib -fstack-protector Lite.o  -o blib/arch/auto/JavaScript/Lite/Lite.so  \
           -ljs         \

chmod 755 blib/arch/auto/JavaScript/Lite/Lite.so
"/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- Lite.bs blib/arch/auto/JavaScript/Lite/Lite.bs 644
Manifying 1 pod document
  CRAKRJACK/JavaScript-Lite-0.04.tar.gz
  /usr/bin/make -- OK
  CRAKRJACK/JavaScript-Lite-0.04.tar.gz
  Skipping test because of notest pragma
Running make install
Running Mkbootstrap for JavaScript::Lite ()
chmod 644 "Lite.bs"
Manifying 1 pod document
Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
Installing /usr/local/lib/perl/5.14.2/auto/JavaScript/Lite/Lite.so
Installing /usr/local/lib/perl/5.14.2/JavaScript/Lite.pm
Installing /usr/local/man/man3/JavaScript::Lite.3pm
Appending installation info to /usr/lib/perl/5.14/perllocal.pod
  CRAKRJACK/JavaScript-Lite-0.04.tar.gz
  /usr/bin/make install  -- OK

cpan[2]> q
« Последнее редактирование: 15-03-2015 16:02 от perl6 » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #15 : 15-03-2015 21:47 » 

Цитата
Код: (Perl)
$context->bind_function(write => sub { print @_ });
Это колбек из js в perl или js-функция на perl.

Добавлено через 2 минуты и 17 секунд:
А тут, модуль JavaScript:SpiderMoney, строк явно больше, да и судя по отзывам, мало у кого путем получается с ним разобраться досконально

Код один в один. Во втором примере просто больше действий реализовано.
« Последнее редактирование: 15-03-2015 21:49 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
perl6
Помогающий

ru
Offline Offline

« Ответ #16 : 16-03-2015 15:06 » 

Цитата
Код один в один. Во втором примере просто больше действий реализовано.
Странно, судя по отзывам, многие испытывают трудности с ним, при попытке реализовать какую нибудь путную вещь
Записан
perl6
Помогающий

ru
Offline Offline

« Ответ #17 : 28-03-2015 20:23 » 

В общем, вот такая вот жопа

Код:
C:\JavaScript-Lite-0.03>dmake
cp lib/JavaScript/Lite.pm blib\lib\JavaScript\Lite.pm
Running Mkbootstrap for JavaScript::Lite ()
"C:\Strawberry\perl\bin\perl.exe" -MExtUtils::Command -e chmod -- 644 "Lite.bs"
"C:\Strawberry\perl\bin\perl.exe" "C:\Strawberry\perl\lib\ExtUtils\xsubpp"  -typ
emap "C:\STRAWB~1\perl\lib\ExtUtils\typemap" -typemap "typemap"  Lite.xs > Lite.
xsc && "C:\Strawberry\perl\bin\perl.exe" -MExtUtils::Command -e mv -- Lite.xsc L
ite.c
Please specify prototyping behavior for Lite.xs (see perlxs manual)
gcc -c  -IC:\\js\src    -s -O2 -DWIN32 -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_C
ONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -fwrapv -fno-strict-aliasing -mms-bitfie
lds -s -O2        -DVERSION=\"0.03\"    -DXS_VERSION=\"0.03\"  "-IC:\STRAWB~1\pe
rl\lib\CORE"  -Wall -Werror Lite.c
cc1.exe: warnings being treated as errors
Lite.xs: In function 'XS_JavaScript__Lite_eval_void':
Lite.xs:411: error: format '%d' expects type 'int', but argument 4 has type 'int
32'
Lite.xs: In function 'XS_JavaScript__Lite_eval_js':
Lite.xs:428: error: format '%d' expects type 'int', but argument 4 has type 'int
32'
Lite.xs: In function 'XS_JavaScript__Lite_invoke':
Lite.xs:513: error: format '%d' expects type 'int', but argument 4 has type 'int
32'
dmake:  Error code 129, while making 'Lite.o'

Ром, прикрывай топик, тут скорее всего надо искать на фрилансе тру си++ кодеров, чтоб эту болячку вылечить....
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #18 : 28-03-2015 21:23 » 

А сам? Тут делов то...

Цитата
error: format '%d' expects type 'int', but argument 4 has type 'int32'
Сделай приведение 4-го аргумента к int.

Цитата
Please specify prototyping behavior for Lite.xs (see perlxs manual)
Вставить строку "PROTOTYPES: DISABLE" после строки вида "MODULE = ... PACKAGE = ...".
« Последнее редактирование: 28-03-2015 21:25 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
perl6
Помогающий

ru
Offline Offline

« Ответ #19 : 31-03-2015 17:05 » 

К сожалению, все равно не получатся.

Код:
C:\JavaScript-Lite-0.04>perl Makefile.PL INC=-IC:\js\src  LIBS="-LC:\js\src\W*"
Checking if your kit is complete...
Looks good
Generating a dmake-style Makefile
Writing Makefile for JavaScript::Lite
Writing MYMETA.yml and MYMETA.json

C:\JavaScript-Lite-0.04>dmake
cp lib/JavaScript/Lite.pm blib\lib\JavaScript\Lite.pm
Running Mkbootstrap for JavaScript::Lite ()
"C:\strawberry\perl\bin\perl.exe" -MExtUtils::Command -e chmod -- 644 "Lite.bs"
"C:\strawberry\perl\bin\perl.exe" "C:\strawberry\perl\lib\ExtUtils\xsubpp"  -typ
emap "C:\strawberry\perl\lib\ExtUtils\typemap" -typemap "typemap"  Lite.xs > Lit
e.xsc && "C:\strawberry\perl\bin\perl.exe" -MExtUtils::Command -e mv -- Lite.xsc
 Lite.c
gcc -c  -IC:\js\src     -s -O2 -DWIN32 -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_C
ONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -fwrapv -fno-strict-aliasing -mms-bitfie
lds -s -O2        -DVERSION=\"0.04\"    -DXS_VERSION=\"0.04\"  "-IC:\strawberry\
perl\lib\CORE"  -Wall -Werror Lite.c
"C:\strawberry\perl\bin\perl.exe" -MExtUtils::Mksymlists \
     -e "Mksymlists('NAME'=>\"JavaScript::Lite\", 'DLBASE' => 'Lite', 'DL_FUNCS'
 => {  }, 'FUNCLIST' => [], 'IMPORTS' => {  }, 'DL_VARS' => []);"
dlltool --def Lite.def --output-exp dll.exp
g++ -o blib\arch\auto\JavaScript\Lite\Lite.xs.dll -Wl,--base-file -Wl,dll.base -
mdll -s -L"C:\strawberry\perl\lib\CORE" -L"C:\strawberry\c\lib" Lite.o   "C:\str
awberry\perl\lib\CORE\libperl520.a" "C:\strawberry\c\i686-w64-mingw32\lib\libmol
dname.a" "C:\strawberry\c\i686-w64-mingw32\lib\libkernel32.a" "C:\strawberry\c\i
686-w64-mingw32\lib\libuser32.a" "C:\strawberry\c\i686-w64-mingw32\lib\libgdi32.
a" "C:\strawberry\c\i686-w64-mingw32\lib\libwinspool.a" "C:\strawberry\c\i686-w6
4-mingw32\lib\libcomdlg32.a" "C:\strawberry\c\i686-w64-mingw32\lib\libadvapi32.a
" "C:\strawberry\c\i686-w64-mingw32\lib\libshell32.a" "C:\strawberry\c\i686-w64-
mingw32\lib\libole32.a" "C:\strawberry\c\i686-w64-mingw32\lib\liboleaut32.a" "C:
\strawberry\c\i686-w64-mingw32\lib\libnetapi32.a" "C:\strawberry\c\i686-w64-ming
w32\lib\libuuid.a" "C:\strawberry\c\i686-w64-mingw32\lib\libws2_32.a" "C:\strawb
erry\c\i686-w64-mingw32\lib\libmpr.a" "C:\strawberry\c\i686-w64-mingw32\lib\libw
inmm.a" "C:\strawberry\c\i686-w64-mingw32\lib\libversion.a" "C:\strawberry\c\i68
6-w64-mingw32\lib\libodbc32.a" "C:\strawberry\c\i686-w64-mingw32\lib\libodbccp32
.a" "C:\strawberry\c\i686-w64-mingw32\lib\libcomctl32.a" dll.exp
Lite.o:Lite.c:(.text+0x14): undefined reference to `JS_GetRuntime'
Lite.o:Lite.c:(.text+0x1c): undefined reference to `JS_GetRuntimePrivate'
Lite.o:Lite.c:(.text+0x1ed): undefined reference to `JS_ReportError'
Lite.o:Lite.c:(.text+0x307): undefined reference to `JS_ReportError'
Lite.o:Lite.c:(.text+0xaec): undefined reference to `JS_GetRuntime'
Lite.o:Lite.c:(.text+0xaf4): undefined reference to `JS_GetRuntimePrivate'
Lite.o:Lite.c:(.text+0xbec): undefined reference to `JS_MaybeGC'
Lite.o:Lite.c:(.text+0xd17): undefined reference to `JS_Init'
Lite.o:Lite.c:(.text+0xd31): undefined reference to `JS_NewContext'
Lite.o:Lite.c:(.text+0xd4b): undefined reference to `JS_SetOptions'
Lite.o:Lite.c:(.text+0xd6b): undefined reference to `JS_NewObject'
Lite.o:Lite.c:(.text+0xd83): undefined reference to `JS_InitStandardClasses'
Lite.o:Lite.c:(.text+0xd9b): undefined reference to `JS_SetGlobalObject'
Lite.o:Lite.c:(.text+0xde2): undefined reference to `JS_SetRuntimePrivate'
Lite.o:Lite.c:(.text+0xf5c): undefined reference to `JS_ClearPendingException'
Lite.o:Lite.c:(.text+0xfd3): undefined reference to `JS_IsExceptionPending'
Lite.o:Lite.c:(.text+0x100c): undefined reference to `JS_GetPendingException'
Lite.o:Lite.c:(.text+0x1057): undefined reference to `JS_GetProperty'
Lite.o:Lite.c:(.text+0x107d): undefined reference to `JS_GetProperty'
Lite.o:Lite.c:(.text+0x10ab): undefined reference to `JS_GetProperty'
Lite.o:Lite.c:(.text+0x10cc): undefined reference to `JS_ValueToString'
Lite.o:Lite.c:(.text+0x10dd): undefined reference to `JS_GetStringBytes'
Lite.o:Lite.c:(.text+0x10f1): undefined reference to `JS_ValueToString'
Lite.o:Lite.c:(.text+0x1106): undefined reference to `JS_GetStringBytes'
Lite.o:Lite.c:(.text+0x1220): undefined reference to `JS_GetGlobalObject'
Lite.o:Lite.c:(.text+0x1246): undefined reference to `JS_GetProperty'
Lite.o:Lite.c:(.text+0x1269): undefined reference to `JS_ObjectIsFunction'
Lite.o:Lite.c:(.text+0x129d): undefined reference to `JS_CallFunctionValue'
Lite.o:Lite.c:(.text+0x12c8): undefined reference to `JS_ValueToString'
Lite.o:Lite.c:(.text+0x12d8): undefined reference to `JS_GetStringBytes'
Lite.o:Lite.c:(.text+0x1492): undefined reference to `JS_GetGlobalObject'
Lite.o:Lite.c:(.text+0x14c0): undefined reference to `JS_CompileScript'
Lite.o:Lite.c:(.text+0x14dc): undefined reference to `JS_ExecuteScript'
Lite.o:Lite.c:(.text+0x1680): undefined reference to `JS_ValueToString'
Lite.o:Lite.c:(.text+0x1690): undefined reference to `JS_GetStringBytes'
Lite.o:Lite.c:(.text+0x1aca): undefined reference to `JS_NewDoubleValue'
Lite.o:Lite.c:(.text+0x1b25): undefined reference to `JS_NewStringCopyN'
Lite.o:Lite.c:(.text+0x1c2b): undefined reference to `JS_NewObject'
Lite.o:Lite.c:(.text+0x1c9f): undefined reference to `JS_SetProperty'
Lite.o:Lite.c:(.text+0x1d15): undefined reference to `JS_NewArrayObject'
Lite.o:Lite.c:(.text+0x1d6e): undefined reference to `JS_SetElement'
Lite.o:Lite.c:(.text+0x1dd6): undefined reference to `JS_GetRuntime'
Lite.o:Lite.c:(.text+0x1dde): undefined reference to `JS_GetRuntimePrivate'
Lite.o:Lite.c:(.text+0x1e2e): undefined reference to `JS_GetRuntime'
Lite.o:Lite.c:(.text+0x1e36): undefined reference to `JS_GetRuntimePrivate'
Lite.o:Lite.c:(.text+0x1e76): undefined reference to `JS_SetBranchCallback'
Lite.o:Lite.c:(.text+0x1f33): undefined reference to `JS_GetRuntime'
Lite.o:Lite.c:(.text+0x1f45): undefined reference to `JS_GetRuntimePrivate'
Lite.o:Lite.c:(.text+0x1f59): undefined reference to `JS_SetRuntimePrivate'
Lite.o:Lite.c:(.text+0x1f91): undefined reference to `JS_DestroyContext'
Lite.o:Lite.c:(.text+0x1f99): undefined reference to `JS_Finish'
Lite.o:Lite.c:(.text+0x22b9): undefined reference to `JS_SetProperty'
Lite.o:Lite.c:(.text+0x240e): undefined reference to `JS_GetGlobalObject'
Lite.o:Lite.c:(.text+0x242e): undefined reference to `JS_GetProperty'
Lite.o:Lite.c:(.text+0x2610): undefined reference to `JS_GetGlobalObject'
Lite.o:Lite.c:(.text+0x1e0f): undefined reference to `JS_SetBranchCallback'
C:/strawberry/c/bin/../lib/gcc/i686-w64-mingw32/4.8.3/../../../../i686-w64-mingw
32/bin/ld.exe: Lite.o: bad reloc address 0x0 in section `.data'
C:/strawberry/c/bin/../lib/gcc/i686-w64-mingw32/4.8.3/../../../../i686-w64-mingw
32/bin/ld.exe: final link failed: Invalid operation
collect2.exe: error: ld returned 1 exit status
dmake:  Error code 129, while making 'blib\arch\auto\JavaScript\Lite\Lite.xs.dll
'
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #20 : 03-04-2015 00:41 » new

Винда — гнилое дело. Жаль

Не хватает модуля для линковки. Что-то из комплекта spidermonkey.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
perl6
Помогающий

ru
Offline Offline

« Ответ #21 : 03-04-2015 02:59 » 

Не хватает модуля для линковки. Что-то из комплекта spidermonkey.
А как понять, какого именно модуля?
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #22 : 03-04-2015 21:50 » 

Великий Гугль:
Цитата
>/usr/lib/libproxy.so: undefined reference to `JS_NewString'
>/usr/lib/libproxy.so: undefined reference to `JS_GetStringBytes

Их задепрекейтили в новом файрфоксе. То есть либе нужен более старый spidermonkey, на spidermonkey из четвертого файрфокса она не соберется.

Нужно подобрать правильную версию libmozjs для сборки. Чего-то с поддержкой JS совсем хреново. И Perl тут совсем не при чем.
« Последнее редактирование: 03-04-2015 21:53 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
perl6
Помогающий

ru
Offline Offline

« Ответ #23 : 14-04-2015 03:06 » 

Скомпилировал версию 1.5, да так теперь другие ошибки лезут.
Короче, неделя потрачена зря (виртуалку пока настраивал, да закрутился туда-сюда)....
Видать, не соберется так просто)

Цитата
     rv.succ = JS_FALSE;
               ^
Lite.xs: In function 'build_string':
C:\js\src/jstypes.h:367:19: error: 'JSIntn' undeclared (first use in this functi
on)
 #define JS_FALSE (JSIntn)0
                   ^
Lite.xs:128:18: note: in expansion of macro 'JS_FALSE'
       if(succ == JS_FALSE) {
                  ^
C:\js\src/jstypes.h:367:26: error: expected ')' before numeric constant
 #define JS_FALSE (JSIntn)0
                          ^
Lite.xs:128:18: note: in expansion of macro 'JS_FALSE'
       if(succ == JS_FALSE) {
                  ^
Lite.xs: In function 'build_hash':
C:\js\src/jstypes.h:367:19: error: 'JSIntn' undeclared (first use in this functi
on)
 #define JS_FALSE (JSIntn)0
                   ^
Lite.xs:174:16: note: in expansion of macro 'JS_FALSE'
     if(succ == JS_FALSE) {
                ^
C:\js\src/jstypes.h:367:26: error: expected ')' before numeric constant
 #define JS_FALSE (JSIntn)0
                          ^
Lite.xs:174:16: note: in expansion of macro 'JS_FALSE'
     if(succ == JS_FALSE) {
                ^
Lite.xs: In function 'build_array':
C:\js\src/jstypes.h:367:19: error: 'JSIntn' undeclared (first use in this functi
on)
 #define JS_FALSE (JSIntn)0
                   ^
Lite.xs:201:18: note: in expansion of macro 'JS_FALSE'
       if(succ == JS_FALSE) {
                  ^
C:\js\src/jstypes.h:367:26: error: expected ')' before numeric constant
 #define JS_FALSE (JSIntn)0
                          ^
Lite.xs:201:18: note: in expansion of macro 'JS_FALSE'
       if(succ == JS_FALSE) {
                  ^
Lite.xs: In function 'run_branch_callback':
C:\js\src/jstypes.h:366:18: error: 'JSIntn' undeclared (first use in this functi
on)
 #define JS_TRUE (JSIntn)1
                  ^
Lite.xs:294:14: note: in expansion of macro 'JS_TRUE'
       return JS_TRUE;
              ^
C:\js\src/jstypes.h:366:25: error: expected ';' before numeric constant
 #define JS_TRUE (JSIntn)1
                         ^
Lite.xs:294:14: note: in expansion of macro 'JS_TRUE'
       return JS_TRUE;
              ^
C:\js\src/jstypes.h:367:26: error: expected ';' before numeric constant
 #define JS_FALSE (JSIntn)0
                          ^
Lite.xs:296:14: note: in expansion of macro 'JS_FALSE'
       return JS_FALSE;
              ^
C:\js\src/jstypes.h:366:25: error: expected ';' before numeric constant
 #define JS_TRUE (JSIntn)1
                         ^
Lite.xs:299:12: note: in expansion of macro 'JS_TRUE'
     return JS_TRUE;
            ^
Lite.xs: In function 'assign_property':
C:\js\src/jstypes.h:367:19: error: 'JSIntn' undeclared (first use in this functi
on)
 #define JS_FALSE (JSIntn)0
                   ^
Lite.xs:348:14: note: in expansion of macro 'JS_FALSE'
   if(succ == JS_FALSE) {
              ^
C:\js\src/jstypes.h:367:26: error: expected ')' before numeric constant
 #define JS_FALSE (JSIntn)0
                          ^
Lite.xs:348:14: note: in expansion of macro 'JS_FALSE'
   if(succ == JS_FALSE) {
              ^
Lite.xs: In function 'XS_JavaScript__Lite_assign_property':
C:\js\src/jstypes.h:367:19: error: 'JSIntn' undeclared (first use in this functi
on)
 #define JS_FALSE (JSIntn)0
                   ^
Lite.xs:383:16: note: in expansion of macro 'JS_FALSE'
       if(rv == JS_FALSE)
                ^
C:\js\src/jstypes.h:367:26: error: expected ')' before numeric constant
 #define JS_FALSE (JSIntn)0
                          ^
Lite.xs:383:16: note: in expansion of macro 'JS_FALSE'
       if(rv == JS_FALSE)
                ^
In file included from C:\js\src/jspubtd.h:45:0,
                 from C:\js\src/jsapi.h:47,
                 from Lite.xs:11:
C:\js\src/jstypes.h:202:27: error: 'JSUint32' undeclared (first use in this func
tion)
 #define JS_BIT(n)       ((JSUint32)1 << (n))
                           ^
C:\js\src/jstypes.h:203:26: note: in expansion of macro 'JS_BIT'
 #define JS_BITMASK(n)   (JS_BIT(n) - 1)
                          ^
C:\js\src/jsapi.h:62:33: note: in expansion of macro 'JS_BITMASK'
 #define JSVAL_TAGMASK           JS_BITMASK(JSVAL_TAGBITS)
                                 ^
C:\js\src/jsapi.h:63:40: note: in expansion of macro 'JSVAL_TAGMASK'
 #define JSVAL_TAG(v)            ((v) & JSVAL_TAGMASK)
                                        ^
C:\js\src/jsapi.h:69:34: note: in expansion of macro 'JSVAL_TAG'
 #define JSVAL_IS_OBJECT(v)      (JSVAL_TAG(v) == JSVAL_OBJECT)
                                  ^
Lite.xs:385:11: note: in expansion of macro 'JSVAL_IS_OBJECT'
       if(!JSVAL_IS_OBJECT(jobjv))
           ^
C:\js\src/jstypes.h:202:36: error: expected ')' before numeric constant
 #define JS_BIT(n)       ((JSUint32)1 << (n))
                                    ^
C:\js\src/jstypes.h:203:26: note: in expansion of macro 'JS_BIT'
 #define JS_BITMASK(n)   (JS_BIT(n) - 1)
                          ^
C:\js\src/jsapi.h:62:33: note: in expansion of macro 'JS_BITMASK'
 #define JSVAL_TAGMASK           JS_BITMASK(JSVAL_TAGBITS)
                                 ^
C:\js\src/jsapi.h:63:40: note: in expansion of macro 'JSVAL_TAGMASK'
 #define JSVAL_TAG(v)            ((v) & JSVAL_TAGMASK)
                                        ^
C:\js\src/jsapi.h:69:34: note: in expansion of macro 'JSVAL_TAG'
 #define JSVAL_IS_OBJECT(v)      (JSVAL_TAG(v) == JSVAL_OBJECT)
                                  ^
Lite.xs:385:11: note: in expansion of macro 'JSVAL_IS_OBJECT'
       if(!JSVAL_IS_OBJECT(jobjv))
           ^
C:\js\src/jstypes.h:202:36: error: expected ')' before numeric constant
 #define JS_BIT(n)       ((JSUint32)1 << (n))
                                    ^
C:\js\src/jstypes.h:203:26: note: in expansion of macro 'JS_BIT'
 #define JS_BITMASK(n)   (JS_BIT(n) - 1)
                          ^
C:\js\src/jsapi.h:62:33: note: in expansion of macro 'JS_BITMASK'
 #define JSVAL_TAGMASK           JS_BITMASK(JSVAL_TAGBITS)
                                 ^
C:\js\src/jsapi.h:65:48: note: in expansion of macro 'JSVAL_TAGMASK'
 #define JSVAL_CLRTAG(v)         ((v) & ~(jsval)JSVAL_TAGMASK)
                                                ^
C:\js\src/jsapi.h:81:42: note: in expansion of macro 'JSVAL_CLRTAG'
 #define JSVAL_TO_GCTHING(v)     ((void *)JSVAL_CLRTAG(v))
                                          ^
C:\js\src/jsapi.h:82:46: note: in expansion of macro 'JSVAL_TO_GCTHING'
 #define JSVAL_TO_OBJECT(v)      ((JSObject *)JSVAL_TO_GCTHING(v))
                                              ^
Lite.xs:387:14: note: in expansion of macro 'JSVAL_TO_OBJECT'
       jobj = JSVAL_TO_OBJECT(jobjv);
              ^
In file included from C:\js\src/jspubtd.h:45:0,
                 from C:\js\src/jsapi.h:47,
                 from Lite.xs:11:
Lite.xs: In function 'XS_JavaScript__Lite_eval_void':
C:\js\src/jstypes.h:367:19: error: 'JSIntn' undeclared (first use in this functi
on)
 #define JS_FALSE (JSIntn)0
                   ^
Lite.xs:409:19: note: in expansion of macro 'JS_FALSE'
     if(rv.succ == JS_FALSE) {
                   ^
C:\js\src/jstypes.h:367:26: error: expected ')' before numeric constant
 #define JS_FALSE (JSIntn)0
                          ^
Lite.xs:409:19: note: in expansion of macro 'JS_FALSE'
     if(rv.succ == JS_FALSE) {
                   ^
Lite.xs: In function 'XS_JavaScript__Lite_eval_js':
C:\js\src/jstypes.h:367:19: error: 'JSIntn' undeclared (first use in this functi
on)
 #define JS_FALSE (JSIntn)0
                   ^
Lite.xs:426:19: note: in expansion of macro 'JS_FALSE'
     if(rv.succ == JS_FALSE) {
                   ^
C:\js\src/jstypes.h:367:26: error: expected ')' before numeric constant
 #define JS_FALSE (JSIntn)0
                          ^
Lite.xs:426:19: note: in expansion of macro 'JS_FALSE'
     if(rv.succ == JS_FALSE) {
                   ^
Lite.xs: In function 'XS_JavaScript__Lite_create':
C:\js\src/jstypes.h:367:19: error: 'JSIntn' undeclared (first use in this functi
on)
 #define JS_FALSE (JSIntn)0
                   ^
Lite.xs:465:45: note: in expansion of macro 'JS_FALSE'
     if (JS_InitStandardClasses(cx, gobj) == JS_FALSE)
                                             ^
C:\js\src/jstypes.h:367:26: error: expected ')' before numeric constant
 #define JS_FALSE (JSIntn)0
                          ^
Lite.xs:465:45: note: in expansion of macro 'JS_FALSE'
     if (JS_InitStandardClasses(cx, gobj) == JS_FALSE)
                                             ^
Lite.xs: In function 'XS_JavaScript__Lite_invoke':
C:\js\src/jstypes.h:367:19: error: 'JSIntn' undeclared (first use in this functi
on)
 #define JS_FALSE (JSIntn)0
                   ^
Lite.xs:506:16: note: in expansion of macro 'JS_FALSE'
       if(rv == JS_FALSE)
                ^
C:\js\src/jstypes.h:367:26: error: expected ')' before numeric constant
 #define JS_FALSE (JSIntn)0
                          ^
Lite.xs:506:16: note: in expansion of macro 'JS_FALSE'
       if(rv == JS_FALSE)
                ^
In file included from C:\js\src/jspubtd.h:45:0,
                 from C:\js\src/jsapi.h:47,
                 from Lite.xs:11:
C:\js\src/jstypes.h:202:27: error: 'JSUint32' undeclared (first use in this func
tion)
 #define JS_BIT(n)       ((JSUint32)1 << (n))
                           ^
C:\js\src/jstypes.h:203:26: note: in expansion of macro 'JS_BIT'
 #define JS_BITMASK(n)   (JS_BIT(n) - 1)
                          ^
C:\js\src/jsapi.h:62:33: note: in expansion of macro 'JS_BITMASK'
 #define JSVAL_TAGMASK           JS_BITMASK(JSVAL_TAGBITS)
                                 ^
C:\js\src/jsapi.h:63:40: note: in expansion of macro 'JSVAL_TAGMASK'
 #define JSVAL_TAG(v)            ((v) & JSVAL_TAGMASK)
                                        ^
C:\js\src/jsapi.h:69:34: note: in expansion of macro 'JSVAL_TAG'
 #define JSVAL_IS_OBJECT(v)      (JSVAL_TAG(v) == JSVAL_OBJECT)
                                  ^
Lite.xs:508:10: note: in expansion of macro 'JSVAL_IS_OBJECT'
       if(JSVAL_IS_OBJECT(fval) && JS_ObjectIsFunction(cx, JSVAL_TO_OBJECT(fval)
)) {
          ^
C:\js\src/jstypes.h:202:36: error: expected ')' before numeric constant
 #define JS_BIT(n)       ((JSUint32)1 << (n))
                                    ^
C:\js\src/jstypes.h:203:26: note: in expansion of macro 'JS_BIT'
 #define JS_BITMASK(n)   (JS_BIT(n) - 1)
                          ^
C:\js\src/jsapi.h:62:33: note: in expansion of macro 'JS_BITMASK'
 #define JSVAL_TAGMASK           JS_BITMASK(JSVAL_TAGBITS)
                                 ^
C:\js\src/jsapi.h:63:40: note: in expansion of macro 'JSVAL_TAGMASK'
 #define JSVAL_TAG(v)            ((v) & JSVAL_TAGMASK)
                                        ^
C:\js\src/jsapi.h:69:34: note: in expansion of macro 'JSVAL_TAG'
 #define JSVAL_IS_OBJECT(v)      (JSVAL_TAG(v) == JSVAL_OBJECT)
                                  ^
Lite.xs:508:10: note: in expansion of macro 'JSVAL_IS_OBJECT'
       if(JSVAL_IS_OBJECT(fval) && JS_ObjectIsFunction(cx, JSVAL_TO_OBJECT(fval)
)) {
          ^
C:\js\src/jstypes.h:202:36: error: expected ')' before numeric constant
 #define JS_BIT(n)       ((JSUint32)1 << (n))
                                    ^
C:\js\src/jstypes.h:203:26: note: in expansion of macro 'JS_BIT'
 #define JS_BITMASK(n)   (JS_BIT(n) - 1)
                          ^
C:\js\src/jsapi.h:62:33: note: in expansion of macro 'JS_BITMASK'
 #define JSVAL_TAGMASK           JS_BITMASK(JSVAL_TAGBITS)
                                 ^
C:\js\src/jsapi.h:65:48: note: in expansion of macro 'JSVAL_TAGMASK'
 #define JSVAL_CLRTAG(v)         ((v) & ~(jsval)JSVAL_TAGMASK)
                                                ^
C:\js\src/jsapi.h:81:42: note: in expansion of macro 'JSVAL_CLRTAG'
 #define JSVAL_TO_GCTHING(v)     ((void *)JSVAL_CLRTAG(v))
                                          ^
C:\js\src/jsapi.h:82:46: note: in expansion of macro 'JSVAL_TO_GCTHING'
 #define JSVAL_TO_OBJECT(v)      ((JSObject *)JSVAL_TO_GCTHING(v))
                                              ^
Lite.xs:508:59: note: in expansion of macro 'JSVAL_TO_OBJECT'
       if(JSVAL_IS_OBJECT(fval) && JS_ObjectIsFunction(cx, JSVAL_TO_OBJECT(fval)
)) {
                                                           ^
In file included from C:\js\src/jspubtd.h:45:0,
                 from C:\js\src/jsapi.h:47,
                 from Lite.xs:11:
C:\js\src/jstypes.h:367:26: error: expected ')' before numeric constant
 #define JS_FALSE (JSIntn)0
                          ^
Lite.xs:510:18: note: in expansion of macro 'JS_FALSE'
         if(rv == JS_FALSE) {
                  ^
Lite.xs: In function 'run_branch_callback':
Lite.xs:301:1: error: control reaches end of non-void function [-Werror=return-t
ype]
 }
 ^
cc1.exe: all warnings being treated as errors
dmake:  Error code 129, while making 'Lite.o'

C:\JavaScript-Lite-0.04-5v1F1P>
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #24 : 14-04-2015 13:37 » 

Наверно стоит обратить внимание на V8.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines