Snider, Tim
2006-Dec-04 08:58 UTC
[Lustre-discuss] Lustre cross compile - configure / make problems - system include path
I''m stuck trying to cross compile and build Lustre. I''m building Lustre on a X86_64 platform running Build machine is running Fedora core 5 with 2.6.15 kernel. [root@ADBuildServ utils]# uname -a Linux ADBuildServ.ks.lsil.com 2.6.15-1.2054_FC5 #1 SMP Tue Mar 14 15:48:20 EST 2006 x86_64 x86_64 x86_64 GNU/Linux Lustre will run on embedded debian Linux with an xscale processor (armv5l). The short version: The compiler is using its include path instead of the include path for debian. i.e. PATH_MAX in lustre/utils/llmount.c is undefined. The compiler is using /OE-YY/ioplinux/build-iq81340mc-linux/tmp/cross/lib/gcc/armv5l-linux/3.4 .4/include/limits.h instead of /cross/srctree/include/linux/limits.h. /OE-YY/ioplinux/ .... is the cross compiler path. Can anyone point me to the correct combination of environment and command line variables that will cause the compiler to use ''my'' include path instead of going to ''its'' include path? I''ve tried a large number of combination of environment variables, configuration options, and running make / gcc by hand all without success. Environment variables: CC=/cross/armv5l-linux/bin/gcc GCC=/cross/armv5l-linux/bin/gcc LINUX=/cross/srctree LDFLAGS=-L/cross/lib CFLAGS="-I/cross/srctree/include -I/cross/srctree/include/linux" Causes unknown long long length in .config. running: ./configure --host=armv5l causes the correct compiler to be picked up but results in a warning: configure: WARNING: If you wanted to set the --build type, don''t use --host. If a cross compiler is detected then cross compile mode will be used. CC: /cross/armv5l-linux/bin/gcc CPPFLAGS: -include $(top_builddir)/config.h -I$(top_builddir)/lnet/include -I$(top_srcdir)/lnet/include -I$(top_builddir)/lustre/include -I$(top_srcdir)/lustre/include -I/cross/srctree LLCPPFLAGS: -D__arch_lib__ -D_LARGEFILE64_SOURCE=1 CFLAGS: -g -O2 EXTRA_KCFLAGS: -include /apps/lustre-1.4.7.3/config.h -g -I/apps/lustre-1.4.7.3/lnet/include -I/apps/lustre-1.4.7.3/lustre/include LLCFLAGS: -g -Wall -fPIC I''ve also tried specifying: --build=linux --with-linux-config=/cross/srctree --with-linux-obj=/cross/srctree --with-linux=/cross/srctree and many other options without success. Using the -B option to override gcc_exec_prefix on the gcc command line by hand didn''t work any better. /cross/armv5l-linux/bin/gcc -DHAVE_CONFIG_H -I. -I. -I../.. -D__arch_lib__ -D_LARGEFILE64_SOURCE=1 -DLUSTRE_UTILS=1 -include ../../config.h -I../../lnet/include -I../../lnet/include -I../../lustre/include -I../../lustre/include -I/cross/srctree -g -Wall -fPIC -B/cross/srctree/include -MT llmount.o -MD -MP -MF ".deps/llmount.Tpo" -c -o llmount.o llmount.c I''ve also tried numerous combinations of options without success. Any help is appreciated. Thanks, Timothy Snider -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.clusterfs.com/pipermail/lustre-discuss/attachments/20061204/280dec31/attachment.html
Jean-Marc Saffroy
2006-Dec-04 09:18 UTC
[Lustre-discuss] Lustre cross compile - configure / make problems - system include path
On Mon, 4 Dec 2006, Snider, Tim wrote:> The short version: > The compiler is using its include path instead of the include path > for debian. > i.e. PATH_MAX in lustre/utils/llmount.c is undefined. The compiler > is using > > /OE-YY/ioplinux/build-iq81340mc-linux/tmp/cross/lib/gcc/armv5l-linux/3.4 > .4/include/limits.h > instead of /cross/srctree/include/linux/limits.h. > /OE-YY/ioplinux/ .... is the cross compiler path.Have you already used this toolchain for other purposes? Did you build gcc *and* glibc? FWIW last time I wanted to build a cross gcc (not for Lustre), I used crosstool: http://kegel.com/crosstool/ For several combinations of (arch, kernel, gcc, glibc) this will automatically download, patch and build everything properly. Just my two cents. -- Jean-Marc Saffroy - jean-marc.saffroy@ext.bull.net