[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: klibc build trouble



On Sun, 2010-03-14 at 18:50 +0100, maximilian attems wrote:
> On Sun, Mar 14, 2010 at 05:47:40PM +0000, Ben Hutchings wrote:
> > 
> > How does it not work?  That links to the kernel headers
> > under /usr/include.  No need to -I/usr/include.
> 
> how would klcc see linux-libc-dev the headers in /usr/include
> without aboves include
> 
> please specify "That links"
> 
> 
> simple example of a libklc-dev wihtout linux-2.6 headers:
> In file included from /usr/lib/klibc/include/unistd.h:11,
>                  from mdadm.h:27,
>                  from mdadm.c:28:
> /usr/lib/klibc/include/sys/types.h:15:31: error: linux/posix_types.h: No such file or directory
> /usr/lib/klibc/include/sys/types.h:16:23: error: asm/types.h: No such file or directory
> 
> once you add aboves -I the redefinitions start rolling:
> In file included from /usr/include/glob.h:22,
>                  from config.c:28:
> /usr/include/sys/cdefs.h:216:1: error: "__attribute_pure__" redefined
> 
> easy to test out with make CC=klcc

With these changes:

diff --git a/debian/control b/debian/control
index 14902cc..12f98e1 100644
--- a/debian/control
+++ b/debian/control
@@ -11,7 +11,7 @@ Vcs-Git: git://git.debian.org/git/kernel/klibc.git
 Package: libklibc-dev
 Section: libdevel
 Architecture: any
-Depends: libklibc (= ${binary:Version}), ${misc:Depends}
+Depends: libklibc (= ${binary:Version}), linux-libc-dev, ${misc:Depends}
 Description: kernel headers used during the build of klibc
  This package contains the set of kernel headers that were required to
  build klibc and the utilities that ship with it.  This may or may
diff --git a/scripts/Kbuild.install b/scripts/Kbuild.install
index de918f0..608759d 100644
--- a/scripts/Kbuild.install
+++ b/scripts/Kbuild.install
@@ -95,8 +95,11 @@ header:
 	$(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include
 	$(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)lib
 	$(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)bin
-	$(Q)make -C $(KLIBCKERNELSRC) ARCH=$(KLIBCARCH) INSTALL_HDR_PATH=$(INSTALLROOT)$(INSTALLDIR)/$(KCROSS) headers_install
+	$(Q)for x in /usr/include/linux /usr/include/asm*; do \
+		ln -s $${x} $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include/ || exit; \
+	done
 	$(Q)cp -rf usr/include/. $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include/.
+	$(Q)chmod -R a+rX $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include
 	$(Q)$(install-data) $(srctree)/klcc/klcc.1 $(INSTALLROOT)$(mandir)/man1/$(KCROSS)klcc.1
 	$(Q)$(install-bin) $(objtree)/klcc/$(KCROSS)klcc $(INSTALLROOT)$(bindir)
 
--- END ---

(the extra chmod was needed to allow for umask > 022) I could compile,
link and run this program:

#include <unistd.h>

int main(void)
{
    write(1, "Hello world\n", 12);
    return 0;
}

Ben.

-- 
Ben Hutchings
I say we take off; nuke the site from orbit.  It's the only way to be sure.

Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: