limo-app / limo

A simple Qt based mod manager
GNU General Public License v3.0
89 stars 0 forks source link

cannot find -lloot: no such file or directory #8

Closed Inviticus-arch closed 3 weeks ago

Inviticus-arch commented 3 weeks ago

the issue happens whenever I try to build limo.

limo-app commented 3 weeks ago

Do you have a directory /usr/include/loot or /usr/local/include/loot? Those should exist after installing libloot.

Inviticus-arch commented 3 weeks ago

Do you have a directory /usr/include/loot or /usr/local/include/loot? Those should exist after installing libloot.

I tried to follow the libloot installation but it is sort of confusing to me, I am still new to linux in general so any help about that is appreciated.

limo-app commented 3 weeks ago

Does building libloot by itself work for you? If not: Try downloading version 0.23.0, which is what Limo uses currently here. You should be able to build it similarly to how you would build Limo:

mkdir build
cmake -DCMAKE_BUILD_TYPE=Release -S . -B build
cmake --build build
cmake --install build --config Release

Note: Building libloot requires cargo to be installed.

Alternatively, the author offers a pre-build Linux version of libloot here. I did not test the pre build version though. If you download this version, you will have to install some files afterwards. After extracting the archive, run from inside the libloot-0.23.0-Linux directory:

install -D include/loot/* --target-directory /usr/local/include/loot
install -D lib/libloot.so* --target-directory /usr/local/lib/
Inviticus-arch commented 3 weeks ago

It keeps saying "fatal error: spdlog/fmt/bundled/args.h: No such file or directory" whenever I do the cmake --build build command I know you said that I can build it similarly.

Inviticus-arch commented 3 weeks ago

Also the pre builtdversions doesn't work either for some weird reason.

limo-app commented 3 weeks ago

Also the pre builtdversions doesn't work either for some weird reason.

Does this yield the same error as you got initially, i.e. "cannot find -lloot: no such file or directory"? Did you verify that that /usr/local/include/loot and /usr/local/lib/libloot.so exist?

It keeps saying "fatal error: spdlog/fmt/bundled/args.h: No such file or directory"

This is weird, how far into the build process do you get? Does this happen during cargos build process?

Inviticus-arch commented 3 weeks ago

it is at the 46% mark. It does happen during cargos build process

limo-app commented 3 weeks ago

it is at the 46% mark. It does happen during cargos build process

This seems like an issue with libloot, might be best to ask the author about it here. If the pre-build version is actually where it should be, you could try pointing Limos CMAKE file directly to those locations: Change line 249 in Limos CMakeLists.txt from

    PRIVATE /usr/include/loot

to

    PRIVATE /usr/local/include/loot
Inviticus-arch commented 3 weeks ago

For the pre build version it kept saying omitting directory 'include/loot/metadata' omitting directory 'include/loot/exception' omitting directory 'include/loot/enum' and it is only for those three files and nothing else. It will not give me an error either.

limo-app commented 3 weeks ago

My bad, install does not work recursively. Try:

cp -r include/loot /usr/local/include/loot

After that you should hopefully be able to build Limo normally.

Inviticus-arch commented 3 weeks ago

seems like it is building fine, it is just slow.

limo-app commented 3 weeks ago

Depending on your system, this may take a while. As a tip for future builds: CMake accepts the -j argument for building in parallel. So as an example, building on 8 cores would look like this:

cmake --build build -j 8
Inviticus-arch commented 3 weeks ago

so I am able to start building limo now but when it gets to 100% it stops and spits out this error now "error: ld returned 1 exit status" and a bunch of undefined reference files

limo-app commented 3 weeks ago

Looks like the linker cannot find some libraries. Can you post the full error block with the undefined references?

limo-app commented 3 weeks ago

By the way, just to make sure since you mentioned you are new to Linux, if you are building Limo from source just to use it you should probably install the flatpak version instead.

Inviticus-arch commented 3 weeks ago

It is going to look messy but here it is:

/usr/bin/ld: warning: libicuuc.so.71, needed by /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../lib/libloot.so, not found (try using -rpath or -rpath-link) /usr/bin/ld: warning: libtbb.so.2, needed by /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../lib/libloot.so, not found (try using -rpath or -rpath-link) /usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../lib/libloot.so: undefined reference to icu_71::UnicodeString::fromUTF8(icu_71::StringPiece)' /usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../lib/libloot.so: undefined reference totbb::task::note_affinity(unsigned short)' /usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../lib/libloot.so: undefined reference to icu_71::ByteSink::~ByteSink()' /usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../lib/libloot.so: undefined reference toicu_71::UnicodeString::~UnicodeString()' /usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../lib/libloot.so: undefined reference to typeinfo for tbb::task' /usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../lib/libloot.so: undefined reference totbb::internal::allocate_root_with_context_proxy::free(tbb::task&) const' /usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../lib/libloot.so: undefined reference to tbb::task_group_context::init()' /usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../lib/libloot.so: undefined reference toicu_71::UnicodeString::toUTF8(icu_71::ByteSink&) const' /usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../lib/libloot.so: undefined reference to icu_71::UnicodeString::doCaseCompare(int, int, char16_t const*, int, int, unsigned int) const' /usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../lib/libloot.so: undefined reference totbb::internal::get_initial_auto_partitioner_divisor()' /usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../lib/libloot.so: undefined reference to tbb::interface7::internal::isolate_within_arena(tbb::interface7::internal::delegate_base&, long)' /usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../lib/libloot.so: undefined reference totbb::task_group_context::~task_group_context()' /usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../lib/libloot.so: undefined reference to tbb::internal::allocate_child_proxy::allocate(unsigned long) const' /usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../lib/libloot.so: undefined reference toicu_71::ByteSink::GetAppendBuffer(int, int, char, int, int)' /usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../lib/libloot.so: undefined reference to icu_71::UMemory::operator delete(void*)' /usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../lib/libloot.so: undefined reference toicu_71::UnicodeString::foldCase(unsigned int)' /usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../lib/libloot.so: undefined reference to tbb::internal::allocate_continuation_proxy::allocate(unsigned long) const' /usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../lib/libloot.so: undefined reference totbb::task_group_context::is_group_execution_cancelled() const' /usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../lib/libloot.so: undefined reference to typeinfo for icu_71::ByteSink' /usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../lib/libloot.so: undefined reference toicu_71::ByteSink::Flush()' /usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../lib/libloot.so: undefined reference to `tbb::internal::allocate_root_with_context_proxy::allocate(unsigned long) const' collect2: error: ld returned 1 exit status make[2]: [CMakeFiles/Limo.dir/build.make:1287: Limo] Error 1 make[1]: [CMakeFiles/Makefile2:86: CMakeFiles/Limo.dir/all] Error 2

I also tried using the flatpack version but that also had some wired error with it.

Inviticus-arch commented 3 weeks ago

and that is qt.glx: qglx_findConfig: Failed to finding matching FBConfig for QSurfaceFormat(version 2.0, options QFlags(), depthBufferSize -1, redBufferSize 1, greenBufferSize 1, blueBufferSize 1, alphaBufferSize -1, stencilBufferSize -1, samples -1, swapBehavior QSurfaceFormat::SingleBuffer, swapInterval 1, colorSpace QSurfaceFormat::DefaultColorSpace, profile QSurfaceFormat::NoProfile) qt.glx: qglx_findConfig: Failed to finding matching FBConfig for QSurfaceFormat(version 2.0, options QFlags(), depthBufferSize -1, redBufferSize 1, greenBufferSize 1, blueBufferSize 1, alphaBufferSize -1, stencilBufferSize -1, samples -1, swapBehavior QSurfaceFormat::SingleBuffer, swapInterval 1, colorSpace QSurfaceFormat::DefaultColorSpace, profile QSurfaceFormat::NoProfile) Could not initialize GLX

limo-app commented 3 weeks ago

I also tried using the flatpack version but that also had some wired error with it.

What king of error? Flatpaks have all dependencies packaged into them, so they are supposed to work on every distro. It should usually be much easier to get the flatpak version to run than building from source. This also has the advantage that you receive automatic updates.

The errors point to missing dependencies for libloot, namely libicu-dev and libtbb-dev. Are those packages installed.

Inviticus-arch commented 3 weeks ago

this is the error for the flatpack one qt.glx: qglx_findConfig: Failed to finding matching FBConfig for QSurfaceFormat(version 2.0, options QFlags(), depthBufferSize -1, redBufferSize 1, greenBufferSize 1, blueBufferSize 1, alphaBufferSize -1, stencilBufferSize -1, samples -1, swapBehavior QSurfaceFormat::SingleBuffer, swapInterval 1, colorSpace QSurfaceFormat::DefaultColorSpace, profile QSurfaceFormat::NoProfile) qt.glx: qglx_findConfig: Failed to finding matching FBConfig for QSurfaceFormat(version 2.0, options QFlags(), depthBufferSize -1, redBufferSize 1, greenBufferSize 1, blueBufferSize 1, alphaBufferSize -1, stencilBufferSize -1, samples -1, swapBehavior QSurfaceFormat::SingleBuffer, swapInterval 1, colorSpace QSurfaceFormat::DefaultColorSpace, profile QSurfaceFormat::NoProfile) Could not initialize GLX

limo-app commented 3 weeks ago

Try running export QT_XCB_GL_INTEGRATION=none and then start the flatpak version again.

Inviticus-arch commented 3 weeks ago

that works for the flatpack version thanks

limo-app commented 3 weeks ago

As last question, so i can add this as a tip for users: What Linux distribution are you running?

Inviticus-arch commented 3 weeks ago

I am currently running Manjaro

limo-app commented 3 weeks ago

Alright, i assume getting the flatpak version to run solves your problem? If so, then i will close this issue

Inviticus-arch commented 3 weeks ago

yep it does solve the problem

limo-app commented 3 weeks ago

Solved, closing