You are not logged in.
I am trying to run a 32-bit executable, and although I have multilib installed (by uncommenting the multilib section in /etc/pacman.conf and doing a full update
pacman -Syu
I still get "No such file or directory" when I try to run my 32-bit executable (which definitely does exist, and is not a broken symbolic link or anything)
Do I have to install anything else after enabling multilib and performing the system upgrade - is there a 32-bit loader or something that I need to install in order for things to work?
Offline
Just uncommenting the multilib repo and running pacman -Syu won't do much, you have to install the packages your binary actually needs.
You could maybe tell us, what binary you are trying to run Also you can use readelf to list the actual dependencies of the binary you want to run, e.g.
readelf -d /usr/lib32/skype/skype
Will give you something like:
Dynamic section at offset 0x22c4050 contains 39 entries:
Tag Type Name/Value
0x00000001 (NEEDED) Shared library: [libXv.so.1]
0x00000001 (NEEDED) Shared library: [libXss.so.1]
0x00000001 (NEEDED) Shared library: [librt.so.1]
0x00000001 (NEEDED) Shared library: [libdl.so.2]
0x00000001 (NEEDED) Shared library: [libX11.so.6]
0x00000001 (NEEDED) Shared library: [libXext.so.6]
0x00000001 (NEEDED) Shared library: [libQtDBus.so.4]
0x00000001 (NEEDED) Shared library: [libQtWebKit.so.4]
0x00000001 (NEEDED) Shared library: [libQtXml.so.4]
0x00000001 (NEEDED) Shared library: [libQtGui.so.4]
0x00000001 (NEEDED) Shared library: [libQtNetwork.so.4]
0x00000001 (NEEDED) Shared library: [libQtCore.so.4]
0x00000001 (NEEDED) Shared library: [libpthread.so.0]
0x00000001 (NEEDED) Shared library: [libstdc++.so.6]
0x00000001 (NEEDED) Shared library: [libm.so.6]
0x00000001 (NEEDED) Shared library: [libgcc_s.so.1]
0x00000001 (NEEDED) Shared library: [libc.so.6]
--- SNIP ---
Search for the missing libraries in the multilib repo and install those.
Offline
Just uncommenting the line in pacman.conf enable the repository, it does not install anything. If an archlinux (or a properly packaged AUR package) need something it will depends on the proper multilib-* package. If you want to run a binary from other source you need at least lib32-glibc (otherwise you get the confusing "no such ). file or directory message"). Run the binary from a terminal and install packages until it does not complain anymore with missing libraries (use pkgfile to search packages owning a file). Note that if the program has optional feature like libgl, you will need to install the 32 bits version of these libraries too (lib32-mesa-libgl in my example). If you want to compile 32 bit packages you will need the multilib-devel group which replace some file from the usual devel group.
Offline
The missing piece was glibc - I didn't realize that after enabling the multilib repository that nothing from multilib would get installed (makes sense though) - I guess I assumed there was a "base" package set, but it makes sense that you'd have to request that to be installed. Installing lib32-glibc did the trick. The output of the readelf was:
0x00000001 (NEEDED) Shared library: [libm.so.6]
0x00000001 (NEEDED) Shared library: [libc.so.6]
0x00000001 (NEEDED) Shared library: [ld-linux.so.2]
0x0000000c (INIT) 0x8049dfc
0x0000000d (FINI) 0x80adf10
0x00000019 (INIT_ARRAY) 0x80fa7c4
0x0000001b (INIT_ARRAYSZ) 8 (bytes)
0x0000001a (FINI_ARRAY) 0x80fa7cc
0x0000001c (FINI_ARRAYSZ) 4 (bytes)
0x00000004 (HASH) 0x8048188
0x00000005 (STRTAB) 0x8048fcc
0x00000006 (SYMTAB) 0x804860c
0x0000000a (STRSZ) 1950 (bytes)
0x0000000b (SYMENT) 16 (bytes)
0x00000015 (DEBUG) 0x0
0x00000003 (PLTGOT) 0x80fb208
0x00000002 (PLTRELSZ) 984 (bytes)
0x00000014 (PLTREL) REL
0x00000017 (JMPREL) 0x8049a24
0x00000011 (REL) 0x8049934
0x00000012 (RELSZ) 240 (bytes)
0x00000013 (RELENT) 8 (bytes)
0x6ffffffe (VERNEED) 0x80498a4
0x6fffffff (VERNEEDNUM) 2
0x6ffffff0 (VERSYM) 0x804976a
0x00000000 (NULL) 0x0
(this is a gcc cross compiler)
THanks guys, great help!
Offline
Great. Please remember to mark you thread as solved by editing the title and adding "[SOLVED]" in front
Offline