X-Spam-Check-By: sourceware.org Message-ID: <46AE2120.4080903@gmail.com> Date: Mon, 30 Jul 2007 19:34:24 +0200 From: Claudio Scordino User-Agent: Thunderbird 1.5.0.12 (X11/20070604) MIME-Version: 1.0 To: sam AT oneparticularharbor DOT net CC: cygwin AT cygwin DOT com Subject: Re: Compiling a Linux kernel using Cygwin References: <46AA047E DOT 3060902 AT gmail DOT com> <1185549608 DOT 25687 DOT 40 DOT camel AT samuelr DOT hq DOT netapp DOT com> In-Reply-To: <1185549608.25687.40.camel@samuelr.hq.netapp.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Samuel Robb wrote: > On Fri, 2007-07-27 at 16:43 +0200, Claudio Scordino wrote: >> Hi all, >> >> I have to compile a Linux kernel using Cygwin on Windows XP (I know, it's a >> very silly thing, but it does not depend on me, unfortunately...). >> >> I already have a gcc cross-compile toolchain for my target (arm) installed on >> Windows. > > I'm going to assume that this is a Cygwin based toolchain. If this is > not the case, then you want to be talking about your build environment > with whoever built your toolchain, not the Cygwin mailing lists. The toolchain is located in Programs/yagarto/bin/arm-elf-gcc, so I assume that is not a cygwin toolchain but a Yagarto's one. I'm going to write an email to Yagarto developers. Anyway, most of the errors I receive seem not related to the toolchain itself but to my mistakes using cygwin :( > >> I already installed gcc-core, gcc-g++, binutils, cpio, make, patch, tar, vim, >> gettext, libintl and libncurses on cygwin (do I need something else?). > > Did you install these using the Cygwin setup.exe, or did you get them > from some other source? If you try to mix and match, say, mingw or > Microsoft Services For Unix utilities with Cygwin, you're going to run > into problems. > No, I don't want to mix stuff on the PC, otherwise it would be a mess. I already had "Microsoft Services for Unix" on the PC, but I installed all those packages using the setup.exe of cygwin. If necessary, I can remove Microsoft Services for Unix completely... >> Since I assume that I need symbolic links, I use an ext2 filesystem on a USB >> PenDrive, using the ext2fsd driver for Windows. > > You shouldn't need to do this - Cygwin supports symbolic links just > fine. Oh, very good! What happens if I create a jffs2 filesystem containing sybolic links made using Cygwin ? Will they be symbolic links also on the Linux target ? Or cygwin uses an internal represention which differs from the Unix one ? > >> However, I'm receiving a lot of errors, everywhere. >> >> Some of them: >> >> 1) Sometimes when compiling, I receive the error "cannot mv file A to B: invalid >> request code". >> >> However, the system allows me to manually copy file A on B and then remove file >> A (which is almost the same thing, so I wonder why the mv command does not work). > > I suspect this is a symptom of using the ext2fsd and the PenDrive. As I > mentioned, you shouldn't need to do this - Cygwin will handle symbolic > links perfectly well. Yes, using a managed mount point these errors disappeared :) > > For cross-compiling a kernel, though, you may want to use a managed > mount; this will help you avoid some file name case-sensitivity issues > that crop up in the kernel source code (ex, the netfiler code uses file > names that differ only in case). Read up on managed mounts in the the > Cygwin FAQ: > > http://cygwin.com/faq/faq.using.html > > Short instructions for using a managed mount > > 1. Create a new, empty directory: > $ mkdir -p /usr/src/kernel > > 2. Mount it as a managed directory: > $ mount -o managed c:/cygwin/usr/src/kernel /usr/src/kernel > > 3. Change into the managed mount directory: > $ cd /usr/src/kernel > > 4. Extract the kernel source in the managed mount directory: > $ tar -xzf Thank you for the instructions. It's what I'm doing now :) > >> 2) I'm not able of doing a "make menuconfig" even using the host gcc. >> >> The system does not find ncurses libraries. But I've installed them! > > IIRC, you'll need to patch menuconfig to build properly under Cygwin... > though the problems that I can remember dealt with libintl, not with > ncurses. > > What errors do you see when you do "make menuconfig"? $ make ARCH=arm CROSS_COMPILE=arm-elf- HOST_LOADLIBES="-lintl" menuconfig HOSTCC scripts/basic/fixdep HOSTCC scripts/basic/docproc HOSTCC scripts/kconfig/lxdialog/checklist.o In file included from scripts/kconfig/lxdialog/checklist.c:24: scripts/kconfig/lxdialog/dialog.h:32:20: curses.h: No such file or directory In file included from scripts/kconfig/lxdialog/checklist.c:24: scripts/kconfig/lxdialog/dialog.h:97: error: parse error before "chtype" I receive errors even if I add -lncurses or -lcurses. Moreover, I couldn't locate the ncurses libraries on the /lib and /usr/lib directories even if cygwin says that they are installed... >> More general question: did anybody build succesfully a Linux kernel under cygwin? > > I used to work for a company (http://www.timesys.com) that did (and > still does) support cross-compiling Linux under Cygwin. So yes, it is > indeed possible - and, frankly, not all that difficult, either. Ok, if someone made it, then it is possible, somehow. Another error: if I put a .config file in the Linux directory and I try to make the kernel (without 'menuconfig') I receive the following error: In file included from include/linux/sched.h:4,^M from arch/arm/kernel/asm-offsets.c:13:^M include/linux/auxvec.h:4:24: error: asm/auxvec.h: No such file or directory^M The file exists. It seems a problem related to symbolic links... Many thanks for your precious help, Claudio -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/