Closed jinyus closed 10 months ago
As the docs state, it is currently a bit clumsily implemented: https://aardappel.github.io/lobster/implementation.html currently, you MUST compile it from the root of the repo
such that it lands in a place where the build files will automaticallly pick it up.
That process will improve at some point I hope :)
Hitting the wall again. I don't have much experience compiling complex C++ projects.
cd dev/compiled_lobster/src
g++ compiled_lobster.cpp -o related -I '../../include' -I '../../src' -I '../../external/SDL/include'
error output:
/usr/bin/ld: /tmp/ccA4QhbG.o: in function `lobster::PushDerefIdxVector1(lobster::VM&, lobster::Value*&, long)':
compiled_lobster.cpp:(.text+0x2d1): undefined reference to `lobster::VM::VMAssert(char const*)'
/usr/bin/ld: compiled_lobster.cpp:(.text+0x311): undefined reference to `lobster::VM::IDXErr(long, long, lobster::RefObj const*)'
/usr/bin/ld: /tmp/ccA4QhbG.o: in function `lobster::GetFieldLVal(lobster::VM&, lobster::Value*&, long)':
compiled_lobster.cpp:(.text+0x3fb): undefined reference to `lobster::VM::IDXErr(long, long, lobster::RefObj const*)'
/usr/bin/ld: /tmp/ccA4QhbG.o: in function `lobster::GetVecLVal(lobster::VM&, lobster::Value*&, long)':
compiled_lobster.cpp:(.text+0x4aa): undefined reference to `lobster::VM::IDXErr(long, long, lobster::RefObj const*)'
/usr/bin/ld: /tmp/ccA4QhbG.o: in function `lobster::U_PUSHSTR(lobster::VM&, lobster::Value*, int)':
compiled_lobster.cpp:(.text+0x663): undefined reference to `lobster::VM::NewString(std::basic_string_view<char, std::char_traits<char> >)'
/usr/bin/ld: /tmp/ccA4QhbG.o: in function `lobster::U_EXIT(lobster::VM&, lobster::Value*, int)':
compiled_lobster.cpp:(.text+0x77b): undefined reference to `lobster::VM::EndEval(lobster::Value*&, lobster::Value const&, lobster::TypeInfo const&)'
/usr/bin/ld: compiled_lobster.cpp:(.text+0x7b5): undefined reference to `lobster::VM::EndEval(lobster::Value*&, lobster::Value const&, lobster::TypeInfo const&)'
/usr/bin/ld: /tmp/ccA4QhbG.o: in function `lobster::U_BCALLRET0(lobster::VM&, lobster::Value*, int, int)':
compiled_lobster.cpp:(.text+0xcb6): undefined reference to `lobster::VM::BCallRetCheck(lobster::Value*, lobster::NativeFun const*)'
/usr/bin/ld: /tmp/ccA4QhbG.o: in function `lobster::U_BCALLRET1(lobster::VM&, lobster::Value*, int, int)':
compiled_lobster.cpp:(.text+0xd7f): undefined reference to `lobster::VM::BCallRetCheck(lobster::Value*, lobster::NativeFun const*)'
/usr/bin/ld: /tmp/ccA4QhbG.o: in function `lobster::U_BCALLRET2(lobster::VM&, lobster::Value*, int, int)':
compiled_lobster.cpp:(.text+0xe5d): undefined reference to `lobster::VM::BCallRetCheck(lobster::Value*, lobster::NativeFun const*)'
/usr/bin/ld: /tmp/ccA4QhbG.o: in function `lobster::U_BCALLRET3(lobster::VM&, lobster::Value*, int, int)':
compiled_lobster.cpp:(.text+0xf56): undefined reference to `lobster::VM::BCallRetCheck(lobster::Value*, lobster::NativeFun const*)'
/usr/bin/ld: /tmp/ccA4QhbG.o: in function `lobster::U_BCALLRET4(lobster::VM&, lobster::Value*, int, int)':
compiled_lobster.cpp:(.text+0x1079): undefined reference to `lobster::VM::BCallRetCheck(lobster::Value*, lobster::NativeFun const*)'
/usr/bin/ld: /tmp/ccA4QhbG.o: in function `lobster::U_ASSERTR(lobster::VM&, lobster::Value*, int, int, int)':
compiled_lobster.cpp:(.text+0x114f): undefined reference to `lobster::VM::Error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
/usr/bin/ld: /tmp/ccA4QhbG.o: in function `lobster::U_NEWVEC(lobster::VM&, lobster::Value*, int, int)':
compiled_lobster.cpp:(.text+0x1232): undefined reference to `lobster::VM::NewVec(long, long, lobster::type_elem_t)'
/usr/bin/ld: /tmp/ccA4QhbG.o: in function `lobster::U_NEWOBJECT(lobster::VM&, lobster::Value*, int)':
compiled_lobster.cpp:(.text+0x1330): undefined reference to `lobster::VM::NewObject(long, lobster::type_elem_t)'
/usr/bin/ld: /tmp/ccA4QhbG.o: in function `lobster::U_SADDN(lobster::VM&, lobster::Value*, int)':
compiled_lobster.cpp:(.text+0x1464): undefined reference to `lobster::VM::NewString(long)'
/usr/bin/ld: /tmp/ccA4QhbG.o: in function `lobster::U_PUSHFLD(lobster::VM&, lobster::Value*, int)':
compiled_lobster.cpp:(.text+0x1fb9): undefined reference to `lobster::VM::VMAssert(char const*)'
/usr/bin/ld: /tmp/ccA4QhbG.o: in function `lobster::U_ABORT(lobster::VM&, lobster::Value*)':
compiled_lobster.cpp:(.text+0x21ca): undefined reference to `lobster::VM::SeriousError(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
/usr/bin/ld: /tmp/ccA4QhbG.o: in function `main':
compiled_lobster.cpp:(.text+0x8174): undefined reference to `RunCompiledCodeMain'
/usr/bin/ld: /tmp/ccA4QhbG.o: in function `lobster::RefObj::Dec(lobster::VM&)':
compiled_lobster.cpp:(.text._ZN7lobster6RefObj3DecERNS_2VME[_ZN7lobster6RefObj3DecERNS_2VME]+0x30): undefined reference to `lobster::RefObj::DECSTAT(lobster::VM&)'
/usr/bin/ld: compiled_lobster.cpp:(.text._ZN7lobster6RefObj3DecERNS_2VME[_ZN7lobster6RefObj3DecERNS_2VME]+0x4e): undefined reference to `lobster::RefObj::DECDELETE(lobster::VM&)'
/usr/bin/ld: /tmp/ccA4QhbG.o: in function `lobster::VM::DivErr(long)':
compiled_lobster.cpp:(.text._ZN7lobster2VM6DivErrEl[_ZN7lobster2VM6DivErrEl]+0x63): undefined reference to `lobster::VM::Error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
/usr/bin/ld: /tmp/ccA4QhbG.o: in function `lobster::VM::ToString(lobster::Value const&, lobster::TypeInfo const&)':
compiled_lobster.cpp:(.text._ZN7lobster2VM8ToStringERKNS_5ValueERKNS_8TypeInfoE[_ZN7lobster2VM8ToStringERKNS_5ValueERKNS_8TypeInfoE]+0x65): undefined reference to `lobster::Value::ToString(lobster::VM&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, lobster::TypeInfo const&, lobster::PrintPrefs&) const'
/usr/bin/ld: compiled_lobster.cpp:(.text._ZN7lobster2VM8ToStringERKNS_5ValueERKNS_8TypeInfoE[_ZN7lobster2VM8ToStringERKNS_5ValueERKNS_8TypeInfoE]+0x8c): undefined reference to `lobster::VM::NewString(std::basic_string_view<char, std::char_traits<char> >)'
collect2: error: ld returned 1 exit status
Again, please just follow the instructions exactly. If you build thru CMake, all the required things will be linked in. Your command-line does not link anything.
Oh, I thought the cmake instructions were just for building the compiler. Works now. 6.5x faster
Woah, I guess this particular benchmark was amendable to optimization..
lobster --cpp related.lobster
runs with no errors but doesn't output the cpp file.Here is the output when running with
--debug
: