make not working: undefined reference to `luaL_traceback' collect2: error: ld returned 1 exit status make: *** [Makefile:90: tilemaker] Error 1
Hi, i have some trouble compiling tilemaker:
/usr/bin/ld: src/osm_lua_processing.o: in function kaguya::lua_type_traits<kaguya::FunctionInvokerType<std::tuple<void (OsmLuaProcessing::*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), void (OsmLuaProcessing::*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char)> >, void>::invoke(lua_State*)': osm_lua_processing.cpp:(.text._ZN6kaguya15lua_type_traitsINS_19FunctionInvokerTypeISt5tupleIJM16OsmLuaProcessingFvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESB_EMS3_FvSB_SB_cEEEEEvE6invokeEP9lua_State[_ZN6kaguya15lua_type_traitsINS_19FunctionInvokerTypeISt5tupleIJM16OsmLuaProcessingFvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESB_EMS3_FvSB_SB_cEEEEEvE6invokeEP9lua_State]+0x6e): undefined reference to luaL_traceback'
/usr/bin/ld: osm_lua_processing.cpp:(.text._ZN6kaguya15lua_type_traitsINS_19FunctionInvokerTypeISt5tupleIJM16OsmLuaProcessingFvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESB_EMS3_FvSB_SB_cEEEEEvE6invokeEP9lua_State[_ZN6kaguya15lua_type_traitsINS_19FunctionInvokerTypeISt5tupleIJM16OsmLuaProcessingFvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESB_EMS3_FvSB_SB_cEEEEEvE6invokeEP9lua_State]+0x3e2): undefined reference to luaL_traceback' /usr/bin/ld: osm_lua_processing.cpp:(.text._ZN6kaguya15lua_type_traitsINS_19FunctionInvokerTypeISt5tupleIJM16OsmLuaProcessingFvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESB_EMS3_FvSB_SB_cEEEEEvE6invokeEP9lua_State[_ZN6kaguya15lua_type_traitsINS_19FunctionInvokerTypeISt5tupleIJM16OsmLuaProcessingFvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESB_EMS3_FvSB_SB_cEEEEEvE6invokeEP9lua_State]+0x57f): undefined reference to luaL_traceback'
/usr/bin/ld: src/osm_lua_processing.o: in function int kaguya::detail::best_match_invoke<void (OsmLuaProcessing::*&)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool), void (OsmLuaProcessing::*&)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, char)>(lua_State*, void (OsmLuaProcessing::*&)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool), void (OsmLuaProcessing::*&)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, char))': osm_lua_processing.cpp:(.text._ZN6kaguya6detail17best_match_invokeIRM16OsmLuaProcessingFvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbEJRMS2_FvSA_bcEEEEiP9lua_StateOT_DpOT0_[_ZN6kaguya6detail17best_match_invokeIRM16OsmLuaProcessingFvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbEJRMS2_FvSA_bcEEEEiP9lua_StateOT_DpOT0_]+0x109): undefined reference to lua_isinteger'
/usr/bin/ld: osm_lua_processing.cpp:(.text.ZN6kaguya6detail17best_match_invokeIRM16OsmLuaProcessingFvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbEJRMS2_FvSA_bcEEEEiP9lua_StateOT_DpOT0[ZN6kaguya6detail17best_match_invokeIRM16OsmLuaProcessingFvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbEJRMS2_FvSA_bcEEEEiP9lua_StateOT_DpOT0]+0x1e9): undefined reference to lua_tointegerx' /usr/bin/ld: src/osm_lua_processing.o: in function kaguya::lua_type_traits<kaguya::FunctionInvokerType<std::tuple<void (OsmLuaProcessing::)(std::__cxx11::basic_string<char, std::char_traitsluaL_traceback' /usr/bin/ld: osm_lua_processing.cpp:(.text._ZN6kaguya15lua_type_traitsINS_19FunctionInvokerTypeISt5tupleIJM16OsmLuaProcessingFvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbEMS3_FvSB_bcEEEEEvE6invokeEP9lua_State[_ZN6kaguya15lua_type_traitsINS_19FunctionInvokerTypeISt5tupleIJM16OsmLuaProcessingFvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbEMS3_FvSB_bcEEEEEvE6invokeEP9lua_State]+0x1ae): undefined reference to luaL_traceback'
/usr/bin/ld: osm_lua_processing.cpp:(.text._ZN6kaguya15lua_type_traitsINS_19FunctionInvokerTypeISt5tupleIJM16OsmLuaProcessingFvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbEMS3_FvSB_bcEEEEEvE6invokeEP9lua_State[_ZN6kaguya15lua_type_traitsINS_19FunctionInvokerTypeISt5tupleIJM16OsmLuaProcessingFvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbEMS3_FvSB_bcEEEEEvE6invokeEP9lua_State]+0x20b): undefined reference to `luaL_traceback'
collect2: error: ld returned 1 exit status
make: *** [Makefile:90: tilemaker] Error 1
rm include/osmformat.pb.cc include/vector_tile.pb.cc
any idea?
best herzbergh
What compiler/version are you using, and what version of Lua?
gcc --version
gcc (Debian 10.2.1-6) 10.2.1 20210110 Copyright (C) 2020 Free Software Foundation
lua50 -v
Lua 5.0.3 Copyright (C) 1994-2006 Tecgraf, PUC-Rio
Hmm - Lua 5.0 is very old. Try 5.1 or 5.2 maybe?
i have Lua 5.4.2 now but i get the same error message..
at the beginning i get a few warnings and BOOST_HEADER_DEPRECATED messages:
e.g.:
g++ -O3 -Wall -Wno-unknown-pragmas -Wno-sign-compare -std=c++14 -pthread -fPIE -DTM_VERSION=v2.2.0 -o src/osm_store.o -c src/osm_store.cpp -I/usr/local/include -isystem ./include -I./src -I/usr/local/include/lua5.1 In file included from /usr/include/boost/math/tools/cxx03_warn.hpp:9, from /usr/include/boost/math/constants/constants.hpp:11, from /usr/include/boost/geometry/util/math.hpp:29, from /usr/include/boost/geometry/core/radian_access.hpp:33, from /usr/include/boost/geometry/geometry.hpp:51, from /usr/include/boost/geometry.hpp:17, from ./include/geom.h:14, from ./include/osm_store.h:5, from src/osm_store.cpp:2: /usr/include/boost/detail/no_exceptions_support.hpp:17:1: note: ‘#pragma message: This header is deprecated. Use <boost/core/no_exceptions_support.hpp> instead.’ 17 | BOOST_HEADER_DEPRECATED("<boost/core/no_exceptions_support.hpp>") | ^~~~~~~~~~~~~~~~~~~~~~~ src/osm_store.cpp: In constructor ‘mmap_file::mmap_file(const string&, std::size_t)’: src/osm_store.cpp:26:47: warning: ‘mmap_file::buffer’ will be initialized after [-Wreorder] 26 | boost::interprocess::managed_external_buffer buffer; | ^~~~~~ src/osm_store.cpp:21:14: warning: ‘std::string mmap_file::filename’ [-Wreorder] 21 | std::string filename; | ^~~~~~~~ src/osm_store.cpp:84:1: warning: when initialized here [-Wreorder] 84 | mmap_file::mmap_file(std::string const &filename, std::size_t offset) | ^~~~~~~~~
okay i got it with lua5.4, liblua5.4-0-dev and some changes in the Makefile for version 5.4...
thank you! great tool!
Brilliant! Glad it works. Let me know what your changes were - it might be helpful for others.
well i did something like:
else ifneq ("$(wildcard /opt/homebrew/include/lua5.4/lua.h)","") LUA_VER := Lua 5.4 LUA_CFLAGS := -I/opt/homebrew/include/lua5.4 LUA_LIBS := -llua5.4 PLATFORM_PATH := /opt/homebrew
in a different error message behind the Lua5.0 problem he asked for Lua5.1 but i have Lua5.4 now.. I had Lua5.0 because it was on the first position inside the repository:
package lua is a virtual package provided by lua50 5.0.3-8.1 lua5.4 5.4.2-2 lua5.3 5.3.3-1.1+b1 lua5.2 5.2.4-1.1+b3 lua5.1 5.1.5-8.1+b3 You should explicitly select one to install.
I though first position would be newest version...
best.