10

I'm using Ubuntu 14.04.2 LTS \n \l.

Here are the libcs I installed.

$ dpkg --list | grep libc6
ii  libc6:amd64                                           2.19-0ubuntu6.7                                     amd64        Embedded GNU C Library: Shared libraries
ii  libc6-dbg:amd64                                       2.19-0ubuntu6.7                                     amd64        Embedded GNU C Library: detached debugging symbols
ii  libc6-dev:amd64                                       2.19-0ubuntu6.7                                     amd64        Embedded GNU C Library: Development Libraries and Header Files
ii  libc6-i386                                            2.19-0ubuntu6.7                                     amd64        Embedded GNU C Library: 32-bit shared libraries for AMD64
rc  libc6-x32                                             2.19-0ubuntu6.7                                     amd64        Embedded GNU C Library: X32 ABI Shared libraries for AMD64

But when I do $ sudo apt-get install libdbus-1-3:i386

The following errors show up

Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 libdbus-1-3:i386 : Depends: libc6:i386 (>= 2.10) but it is not going to be installed
 unity-control-center : Depends: libcheese-gtk23 (>= 3.4.0) but it is not going to be installed
                        Depends: libcheese7 (>= 3.0.1) but it is not going to be installed
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

I'm wondering what's the difference between libc6:i386 and libc6-i386?

zjk
  • 2,043
  • 3
  • 28
  • 45
  • Adding a comment here to keep track of this one... Yikes! Good to know they're not `apples` to `apples`. – kayleeFrye_onDeck May 19 '16 at 03:51
  • Seems like this [was asked a year ago](http://stackoverflow.com/questions/30489914/whats-the-difference-between-libc6-i386-and-libc6i386), but with no response. Interesting to see it come up again. Also likely that that question will have to be marked as a dup of this one if you get a good answer. – cf- May 19 '16 at 03:58

1 Answers1

8

libc6:i386 is the i386 version of libc for i386 architecture kernels/systems. This is for running packages built for i386 systems and would be required if you are trying to use i386 packages on an amd64 system. This is called multiarch.

libc6-i386 is the 32bit development package of libc for amd64 systems. This is not for running software, its for compiling and linking 32 bit code.

bodangly
  • 2,473
  • 17
  • 28
  • I know this is an oooold question, but: can you explain what is the difference? When I link code against `libc6` for `i386` while on `amd64`, don't I need the `libc6:i386` library to be present and not `libc6-i386:amd64` one? Does `libc6-i386` contains real implementation — looks exactly like that. So, can I run (theoretically) `i386`-compiled binaries on my `amd64` machine without `libc6:i386`? So many questions, actually :D – Lapshin Dmitry Aug 22 '19 at 16:54
  • For me this is not right. On my Debian system libc6:amd64 has most files in (/usr)/lib/x86_64-linux-gnu. libc-amd64 has most files in (/usr)/lib64. Files are pretty similar: gconv/UTF-32.so, libdl.so.2, libnss_compat-2.28.so, ld-2.28.so, etc. No development headers. Comparison with dhex has given that some files seem equal despite of some debugging symbol IDs, other files differ in few flags but have exactly same binary layout and size. – u_Ltd. Sep 25 '19 at 00:07
  • You can run i386-compiled binaries with at least one of :i386 / -i386 installed. But don't ask me how to tell them to use the right `ld.so`. Probably they'll find automatically. – u_Ltd. Sep 25 '19 at 00:10
  • ```libc6-i386```: 32-bit shared libraries for AMD64 but for those who do not want to ```dpkg --add-architecture i386```. ```libc6-dev-i386```: 32-bit development libraries for AMD64. – Sam Jul 29 '23 at 08:32