sys/stat.h moved from libc6-dev to libc6-dev-i386

Asked by Nedim Srndic on 2011-10-17

Hello,

I am trying to compile a program I wrote (http://sourceforge.net/p/pjscan) on Ubuntu 11.10, AMD64 version. The default installation is missing some include files (e.g., sys/stat.h) I use from the program. It seems sys/stat.h has moved from the libc6-dev (in Ubuntu 10.10) to the libc6-dev-i386 package. I want to build a 64bit executable. The program works well on 64bit versions of Ubuntu 10.10 and 11.04.

Is the usage of libc6-dev-i386 recommended in this case? Is there a different package for 64bit applications? I don't understand why this package has the i386 in it's name. The POSIX spec for sys/stat.h (http://pubs.opengroup.org/onlinepubs/7908799/xsh/sysstat.h.html) doesn't say that this is a 32bit-only include file. I must be missing something here.

In short: what package do I need to install on Ubuntu 11.10 64bit before I compile a program that includes sys/stat.h?

Greetings,
Nedim Srndic

Question information

Language:
English Edit question
Status:
Solved
For:
Ubuntu eglibc Edit question
Assignee:
No assignee Edit question
Solved by:
Nedim Srndic
Solved:
2011-10-17
Last query:
2011-10-17
Last reply:
2011-10-17
enubuntu (mr.tennents) said : #1

Are you using a 64 bit version?
Run uname -a for security in your terminal and paste here the result.

See also here, maybe this will help you:
http://packages.ubuntu.com/search?keywords=libc6-dev&searchon=names&suite=oneiric&section=all
http://packages.ubuntu.com/it/oneiric/i386/libc6-dev-amd64

Nedim Srndic (nedim-sh) said : #2

The machine in question is a 64 bit virtual machine with Ubuntu 11.10 64bit, running on a 64 bit PC with an Ubuntu 10.10 64bit OS. This is confirmed by the "x86_64" string that I get from running uname -a on BOTH the virtual and the physical machine.

From the search link you posted, you can see that there is a strange thing going on here. The libc6-dev-i386 is made for the AMD64 architecture, while the libc6-dev-amd64 is made for the i386 architecture. As far as I can tell, it should the other way around, i.e., the names are mixed up.

enubuntu (mr.tennents) said : #3

I don't know this.

I think that you should open a bug here:
https://bugs.launchpad.net/ubuntu/+source/eglibc/+filebug

If it is not a bug, you might receive more help from expert user with a bug report.

Nedim Srndic (nedim-sh) said : #4

Thank you for your help, we might have found a bug. I will report it now.

bhs (bharath-vegito) said : #5

Include files are not specific to 32-bit or 64-bit. they may have conditional compilation w.r.t 32/64bit. To build a 64bit. You should be able to include the file. Could you mention what the function you want to use which is declared in stat.h?

Nedim Srndic (nedim-sh) said : #6

It's been a while since this happened. Since then, I discovered that I need to install the package libc6-dev-i386 on Ubuntu 11.10 64-bit if I want to include sys/stat.h in my programs. It was weird to me that the package name ends in "i386" on a 64-bit system.

The function I was using is open(2).