tpoechtrager / osxcross

Mac OS X cross toolchain for Linux, FreeBSD, OpenBSD and Android (Termux)
GNU General Public License v2.0
2.86k stars 324 forks source link

libicui18n.so.67 No such file or directory #273

Closed iTrooz closed 3 years ago

iTrooz commented 3 years ago

Hi ! I've tried to compile osxcross and I ran into this issue (see title)

Here is what I did in detail :

and I get the error error while loading shared libraries: libicui18n.so.67: cannot open shared object file: No such file or directory I then tried with ./build_gcc.sh, and then after rebuilding clang (which I did not do the first time) : same issue

I then updated my XCode xip to Xcode_11.3.1, re-cloned the repo from scratch, generated SDK (10.15) and built. Same error (the screenshot below is from this try) test

I'm running Manjaro using kernel 5.10, icu package is version 68.2, both clang/llvm are version 11.1.0 (/bin normal ones and /usr/bin from ./build_clang.sh)

I think it's worth saying that I had it to work previously, but have to re-install it because I also got this error on the previous install

tpoechtrager commented 3 years ago

I had the same problem on Arch Linux. A rebuild of OSXCross fixed it for me.

What's the output of ldd -v ./target/bin/x86_64-apple-darwin19-ld?

iTrooz commented 3 years ago

Here is it : https://pastebin.com/iiVqWt87

tpoechtrager commented 3 years ago

You have broken libraries in your system. Also libtapi.so shouldn't be in /usr/lib.

Delete the broken libraries.

find / -name "libicuuc.so*"

Then reinstall the packages and rebuild OSXcross.

iTrooz commented 3 years ago

Excuse, I think I didn't understood this comment You are talking about "broken libraries", but which one do you talk about apart from "libicuuc.so" ? And how's that "broken" ? Corrupted ? In wrong path ?

I deleted the following libraries : /usr/lib/libicuuc.so /usr/lib/libicuuc.so.68.2 /usr/lib/libicuuc.so.68 /usr/lib32/libicuuc.so /usr/lib32/libicuuc.so.68.2 /usr/lib32/libicuuc.so.68

And reinstalled the package icu and lib32-icu. Same result after this (re-cloned the repo from scratch)

From what I've seen from ldd, it can't find version 67 of libicui18n/libicuuc/libicudata (as well as requiring version 68) So, what is wrong here ? Should version 67 be somehow present in my system, or should the binaries link only to version 68 ?

I've tried to symlink the version 67 of theses 3 files to their version 68, and all the installations work now. Still, it's not an ideal solution (not really a fan of these kind of tricks) so.. if you have an idea on what's going on, I'm taking it

tpoechtrager commented 3 years ago

There must be a reason why there are references to old libraries. You either have old versions of them in /usr/local or /opt/ or there's something else broken.

Did you remove /usr/lib/libtapi.so*? It doesn't belong there. Also remove your custom build of clang/llvm (including all static and shared libraries) from /usr. Never install anything to /bin, /lib or /usr/bin, /usr/lib.

PuppiestDoggo commented 3 years ago

I'm currently vc with Itrooz. Basically he try to excuse himself. You will quickly get a message from him

PS : He feels so bad rn

iTrooz commented 3 years ago

Okay, so... After you said Never install anything to /bin, /lib or /usr/bin, /usr/lib., I realised that I had moved all of my previous installation to /usr . So I removed all the libs and bins from there, and made a deep search to removed anything related to this library version 67

I re-cloned the repo from scratch, and it worked !

i'm so SO sorry because this error was definitively my fault

tpoechtrager commented 3 years ago

No problem. Glad it works now. ;)