New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Missing link /lib/ld-linux.so.3 #339
Comments
Hello We provide binary compatibility guarantee for binaries compiled using Raspbian. However we recommend binaries are compiled for their native target for performance and compatibility reasons. OSMC for Pi1/0 uses Raspbian as upstream for debootstrap process I had a look at the vhduino binary.
This shows the vhduino binary has been cross compiled with a very old toolchain. This toolchain is deprecated. It also does not follow the GNU triplet standards, which is why there are problems with the LD path. This could suggest the toolchain is old, or Crosstool was not configured correctly. I'd also check other utilities like libtool as well. I recommend the author recompiles the binary with a more modern toolchain if they wish to distribute it. If they compile it on Raspbian, it will work without issue on OSMC. |
If the binary is compiled using a recent version of Raspbian, Raspbian Lite or Minibian it will work. It will also work if you use the official Raspberry Pi cross-compilation tools. On OSMC for ARMv7 (Pi2/Pi3), which I assume is affected, I see:
Nothing deviates from the standard Debian Jessie implementation here on OSMC, with the exception of an addition to /etc/ld.so.conf.d to add /opt/vc/lib to the default path. This looks very much an issue with the toolchain. It would be useful to know which device you tested on, and if the Pi 1 version of OSMC is affected. Is there a reason the binary cannot be recompiled using a compatible toolchain? We haven't had any reports of this issue before. |
Possibly related to https://wiki.debian.org/Multiarch/LibraryPathOverview#ELF_interpreter-1 "Executables built with the old ELF interpreter will not run on a system that only provides the multiarch install location. This is clearly not OK. To provide backwards compatibility, even a multiarch-capable system will need to install ELF interpreters at the old locations as well, possibly via symlinks. (Note that any given system can only be compatible in this way with one architecture, except for lucky circumstances.) " I think this is exactly what is done by recent Raspbian Releases and other Debian flavors ...
|
@hvdwolf I can't see your comment any more. Did you delete it? |
Thanks for the background. Using the symlink approach will break multi-arch support, which may not be ideal. Needs some thought. |
@samnazarko Yes, it was exactly what you mentioned about |
I was also suprised the comment has disappeared somehow. Anyhow, I have checked the content of /etc/ld.so.conf.d/arm-linux-gnueabihf.conf is the same as on Raspbian. I think the lines from the Debian Wiki point into the right direction as they explicitly require legacy support. EDIT: ok, if it breaks multi-arch support this might be an issue with other software used on the system |
I suspect we can do this on ARM. x64 version of OSMC this is not feasible. |
Ah, yes. On Intel you may require support for 32-bit also. On ARM it is only 32-bit (for Raspbian, at least) |
I think 29154da is what we need.
|
Excellent, thank you very much for looking into this so quickly |
Fixed in master. Will be ready for Sunday. Thanks again. |
i download dotnet-linux-arm.latest.tar.gz on 12/10 and im getting a i installed it in a local directory as well as is there some preinstallation i need to install? here are some diagnostics from my linux system robot@ev3dev:~$ lscpu ====update... i tried hacking around by opening the dotnet executable and saw a path in there. so i copied one of the sym links in the lib directory so it could match that path and something changed. now i get a segmentation fault. the path was in the first few lines of the dotnet exe its: /lib/ld-linux-armhf.so.3 -bash: ./dotnet: No such file or directory silent crash. any ideas? |
The original problem was resolved. You don't mention which device you're running OSMC. If you're using a Pi, this may be the issue: https://github.com/dotnet/core-setup/issues/2559. |
thanks. not using pi.. using ev3.. someone helped me on another thread and said the following. |
Is this on an OSMC system? |
its the lego mindstorms ev3 robot ( debian-jesse ). chip is "ARM9" but apparently from the output above runs the ARM5 instruction set? long story short it cant run dotnet core. and runs a very low level version of nodejs for the same reasons. |
It's correct that dot net core uses ARMv7 instructions. This is why it won't work on BCM2835 products. Only MS can change this unfortunately. |
my only angle now is to spend 150 bucks on a brickpi + raspberry pi combo. |
Sorry -- not sure how this is related to OSMC. |
This will be required , for example, for executables which have been built on Raspian which require /lib/ld-linux.so.3. For example
The issue can be resolved by creating a linka s follows:
I think this should be handled as some users also want to install/run other stuff on osmc.
How to reproduce - You can pull vhduino from https://github.com/pimatic/homeduinojs
Suggested fixture - Add the symbolic link as outlined above
The text was updated successfully, but these errors were encountered: