Проблемы со сборкой Zerobrane в Linux (Raspberry Pi)

Я пытаюсь скомпилировать Zerobrane на Raspberry Pi 4. Я запустил:

build-linux.sh все

Я могу скомпилировать wxWidgets (3.1.4), но когда я скомпилирую wxLua, я получаю ошибки, показанные ниже. Кто-нибудь знает, почему это не удастся? На веб-сайте wxLua указано, что wsLua строится против wxWidgets 2.8.x и 2.9.x. Это проблема? Если да, то как мне заставить скрипт сборки построить правильную версию wxWidgets?

Scanning dependencies of target wxLuaModule
[  2%] Building CXX object modules/luamodule/CMakeFiles/wxLuaModule.dir/luamodule.cpp.o
[  4%] Building CXX object modules/luamodule/CMakeFiles/wxLuaModule.dir/__/wxbind/src/wxgl_bind.cpp.o
[  6%] Building CXX object modules/luamodule/CMakeFiles/wxLuaModule.dir/__/wxbind/src/wxstc_bind.cpp.o
[  8%] Building CXX object modules/luamodule/CMakeFiles/wxLuaModule.dir/__/wxbind/src/wxxrc_bind.cpp.o
[  8%] Building CXX object modules/luamodule/CMakeFiles/wxLuaModule.dir/__/wxbind/src/wxhtml_bind.cpp.o
[ 10%] Building CXX object modules/luamodule/CMakeFiles/wxLuaModule.dir/__/wxbind/src/wxhtml_wxlhtml.cpp.o
[ 13%] Building CXX object modules/luamodule/CMakeFiles/wxLuaModule.dir/__/wxbind/src/wxaui_bind.cpp.o
[ 15%] Building CXX object modules/luamodule/CMakeFiles/wxLuaModule.dir/__/wxbind/src/wxadv_bind.cpp.o
/home/pi/Downloads/ZeroBraneStudio-1.90/build/wxlua/wxLua/modules/wxbind/src/wxaui_bind.cpp: In function ‘int wxLua_wxAuiToolBar_DestroyTool(lua_State*)’:
/home/pi/Downloads/ZeroBraneStudio-1.90/build/wxlua/wxLua/modules/wxbind/src/wxaui_bind.cpp:2311:27: error: ‘class wxAuiToolBar’ has no member named ‘DestroyTool’; did you mean ‘Destroy’?
     bool returns = (self->DestroyTool(toolId));
                           ^~~~~~~~~~~
                           Destroy
/home/pi/Downloads/ZeroBraneStudio-1.90/build/wxlua/wxLua/modules/wxbind/src/wxaui_bind.cpp: In function ‘int wxLua_wxAuiToolBar_DestroyToolByIndex(lua_State*)’:
/home/pi/Downloads/ZeroBraneStudio-1.90/build/wxlua/wxLua/modules/wxbind/src/wxaui_bind.cpp:2329:27: error: ‘class wxAuiToolBar’ has no member named ‘DestroyToolByIndex’; did you mean ‘FindToolByIndex’?
     bool returns = (self->DestroyToolByIndex(idx));
                           ^~~~~~~~~~~~~~~~~~
                           FindToolByIndex
/home/pi/Downloads/ZeroBraneStudio-1.90/build/wxlua/wxLua/modules/wxbind/src/wxaui_bind.cpp: In function ‘int wxLua_wxAuiManager_AlwaysUsesLiveResize(lua_State*)’:
/home/pi/Downloads/ZeroBraneStudio-1.90/build/wxlua/wxLua/modules/wxbind/src/wxaui_bind.cpp:10513:35: error: ‘AlwaysUsesLiveResize’ is not a member of ‘wxAuiManager’
     bool returns = (wxAuiManager::AlwaysUsesLiveResize());
                                   ^~~~~~~~~~~~~~~~~~~~
/home/pi/Downloads/ZeroBraneStudio-1.90/build/wxlua/wxLua/modules/wxbind/src/wxaui_bind.cpp: In function ‘int wxLua_wxAuiManager_HasLiveResize(lua_State*)’:
/home/pi/Downloads/ZeroBraneStudio-1.90/build/wxlua/wxLua/modules/wxbind/src/wxaui_bind.cpp:10802:27: error: ‘class wxAuiManager’ has no member named ‘HasLiveResize’; did you mean ‘actionResize’?
     bool returns = (self->HasLiveResize());
                           ^~~~~~~~~~~~~
                           actionResize
/home/pi/Downloads/ZeroBraneStudio-1.90/build/wxlua/wxLua/modules/wxbind/src/wxaui_bind.cpp: In function ‘int wxLua_wxAuiDockUIPart_Get_button(lua_State*)’:
/home/pi/Downloads/ZeroBraneStudio-1.90/build/wxlua/wxLua/modules/wxbind/src/wxaui_bind.cpp:12217:29: error: cannot convert ‘wxAuiPaneButton*’ to ‘lua_Number’ {aka ‘double’}
     lua_pushnumber(L, self->button);
                       ~~~~~~^~~~~~
In file included from /home/pi/Downloads/ZeroBraneStudio-1.90/build/wxlua/wxLua/modules/wxlua/wxldefs.h:19,
                 from /home/pi/Downloads/ZeroBraneStudio-1.90/build/wxlua/wxLua/modules/wxlua/wxlstate.h:13,
                 from /home/pi/Downloads/ZeroBraneStudio-1.90/build/wxlua/wxLua/modules/wxbind/src/wxaui_bind.cpp:18:
/home/pi/Downloads/ZeroBraneStudio-1.90/build/deps/include/lua.h:161:58: note:   initializing argument 2 of ‘void lua_pushnumber(lua_State*, lua_Number)’
 LUA_API void  (lua_pushnumber) (lua_State *L, lua_Number n);
                                               ~~~~~~~~~~~^
/home/pi/Downloads/ZeroBraneStudio-1.90/build/wxlua/wxLua/modules/wxbind/src/wxaui_bind.cpp: In function ‘int wxLua_wxAuiDockUIPart_Set_button(lua_State*)’:
/home/pi/Downloads/ZeroBraneStudio-1.90/build/wxlua/wxLua/modules/wxbind/src/wxaui_bind.cpp:12379:20: error: invalid conversion from ‘int’ to ‘wxAuiPaneButton*’ [-fpermissive]
     self->button = val;
                    ^~~
[ 17%] Building CXX object modules/luamodule/CMakeFiles/wxLuaModule.dir/__/wxbind/src/wxadv_wxladv.cpp.o
[ 17%] Building CXX object modules/luamodule/CMakeFiles/wxLuaModule.dir/__/wxbind/src/wxcore_appframe.cpp.o
make[2]: *** [modules/luamodule/CMakeFiles/wxLuaModule.dir/build.make:141: modules/luamodule/CMakeFiles/wxLuaModule.dir/__/wxbind/src/wxaui_bind.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [CMakeFiles/Makefile2:343: modules/luamodule/CMakeFiles/wxLuaModule.dir/all] Error 2
make: *** [Makefile:152: all] Error 2
Error: failed to build wxLua

person Lance Larsen    schedule 04.10.2020    source источник


Ответы (2)


Версия wxlua, используемая командой build-linux.sh, не работает с wxwidgets 3.1.4. Вам либо нужно использовать версию wxwidgets, указанную в этом скрипте (которая останавливается на фиксации 1c754fe7) или используйте более новую версию wxlua. Вы можете изменить скрипт сборки, чтобы использовать 3.1.0.0 вместо 3.0.0.8:

diff --git a/build/build-linux.sh b/build/build-linux.sh
index b0944b62..c1af45d6 100755
--- a/build/build-linux.sh
+++ b/build/build-linux.sh
@@ -297,7 +297,7 @@ if [ $BUILD_WXLUA ]; then
   git clone "$WXLUA_URL" "$WXLUA_BASENAME" || { echo "Error: failed to get wxlua"; exit 1; }
   cd "$WXLUA_BASENAME/wxLua"
 
-  git checkout v3.0.0.8
+  git checkout v3.1.0.0
 
   cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" \
     -DCMAKE_BUILD_TYPE=$WXLUABUILD -DBUILD_SHARED_LIBS=FALSE \
person Paul Kulchenko    schedule 04.10.2020

После изменения строки выше возникают дополнительные проблемы. Версия LPEG должна быть изменена, а сцинтиллуа 404

line 65 LPEG_BASENAME="lpeg-1.0.2" #change from lpeg-1.0.0
line 69 LEXLPEG_BASENAME="scintillua_4.4.5-2"
line 70 LEXLPEG_FILENAME="$LEXLPEG_BASENAME.zip"
line 71 LEXLPEG_URL="https://github.com/orbitalquark/scintillua/releases/download/scintillua_4.4.5-2/$LEXLPEG_FILENAME"

Это намного дальше, но ошибки в LexLPeg.cxx: 33: 10: фатальная ошибка: DefaultLexer.h: нет такого файла или каталога

person Inksaver    schedule 01.02.2021