compilation problems with some code from Linux

Lane lane at joeandlane.com
Fri Dec 8 10:02:37 PST 2006


On Friday 08 December 2006 11:21, Andrew Falanga wrote:
> Hi,
>
> I'm trying to port some code from Linux to FreeBSD and I've got an issue
> that revolves around something I've never dealt with before.  The code
> includes the following header:
>
> #include <sys/ucred.h>
>
> Apparently, program is attempting to make use of the xucred structure
> defined in there, because the rest of the stuff in the file seems to be for
> the kernel.  However, when I try to compile, gcc continually bails with the
> following error (among others), "NGROUPS was not declared in this scope."
> The NGROUPS appears to be a macro, but it's not defined earlier on.  Would
> anyone here know where it's defined so I can include that file too?
>
> Secondly, I'm also getting errors because gcc can't find <sys/vfs.h>
> either.  True enough, there isn't any vfs.h file in /usr/include/sys. 
> Since this file is in Linux, what should I include for FreeBSD?
>
> Thanks,
> Andy
> _______________________________________________
> freebsd-questions at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-questions
> To unsubscribe, send any mail to
> "freebsd-questions-unsubscribe at freebsd.org"
Andy,

I won't pretend to know exactly which header files correspond for your port, 
but in the past I've found some things that work for me:

use 

locate vfs.h

to find similar file names.  On 6.x and 5.x I see that these are possible 
candidates:

/usr/X11R6/include/gnome-vfs-2.0/libgnomevfs/gnome-vfs.h
/usr/include/fs/devfs/devfs.h
/usr/include/sys/statvfs.h
/usr/local/include/af_vfs.h
/usr/src/sys/compat/svr4/svr4_statvfs.h
/usr/src/sys/fs/devfs/devfs.h
/usr/src/sys/nfs4client/nfs4_vfs.h
/usr/src/sys/sys/statvfs.h


But you'd have to compare the functions and structures defined in sys/vfs.h on 
linux to determine which is your best match up.

There is /usr/ports/devel/mipsel-linux-kernel-headers/ which, according to 
pkg-plist will install mipsel-linux/include/linux/vfs.h.  That may be exactly 
what you need (although it may be overkill).  Or it may be the LAST thing you 
need :)

Sometimes a porter will simply create a patch file 
in /usr/ports/<portname>/files that will create a skeleton version of the 
file which includes only the items you need.  I've done this for development 
on my own system.

As far as the NGROUP or other macros ... yikes!  You may have to recreate that 
functionality entirely.

I ran this:

#!/bin/sh
for each in `locate  .h | grep '\.h$'`
do
if [ -f $each ]; then
MYF=`cat $each | grep -i ngroups`
if [ "x$MYF" != "x" ]; then
        echo $each : "$MYF"
fi
MYF=""
fi
done


It could probably be done more easily with sed and some elbow grease, but it 
does show NGROUPS defined here:

/usr/X11R6/include/X11/Xos.h : #define NGROUPS 16

and 

/usr/include/sys/param.h 

among other places.

Good luck!

lane


More information about the freebsd-questions mailing list