kohler / click

The Click modular router: fast modular packet processing and analysis
Other
744 stars 322 forks source link

No longer able to build click with ubuntu distribution and kernel release 3.13 #300

Open Roland2014 opened 8 years ago

Roland2014 commented 8 years ago

Click binary (build of linuxmodule, thus kernel mode, and not the user mode) has been successfully built using ubuntu server 14.04.1 with a kernel 3.13.

Since click commit c91fc67e3db it doesn't compile anymore with this distribution and this kernel release.

Is anybody already encountered this issue and has an idea of the solution?

kohler commented 8 years ago

I haven't. Can you attach your config.log? This may be a bit difficult to fix, but we will try.

Roland2014 commented 8 years ago

Hello, running ./configure --enable-linuxmodule gives me the following output :

config.log.zip

./configure --enable-linuxmodule

checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking for gcc... gcc
checking for g++... g++
checking for gcc... (cached) gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for sys/types.h... (cached) yes
checking for unistd.h... (cached) yes
checking for stdint.h... (cached) yes
checking for inttypes.h... (cached) yes
checking for endian.h... yes
checking for machine/endian.h... no
checking for byteswap.h... yes
checking for strings.h... (cached) yes
checking for time.h... yes
checking for termio.h... yes
checking for netdb.h... yes
checking for sys/event.h... no
checking for pwd.h... yes
checking for grp.h... yes
checking for execinfo.h... yes
checking for poll.h... yes
checking for dlfcn.h... yes
checking for sys/mman.h... yes
checking for stdlib.h... (cached) yes
checking for sys/param.h... yes
checking for ifaddrs.h... yes
checking for linux/if_tun.h... yes
checking for net/if_dl.h... no
checking for net/if_tap.h... no
checking for net/if_tun.h... no
checking for net/if_types.h... no
checking for net/bpf.h... no
checking for netpacket/packet.h... yes
checking whether the C compiler accepts -W -Wall... yes
checking whether the C compiler accepts -Werror... yes
checking how to run the C preprocessor... gcc -E
checking for inline... inline
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking whether  works... yes
checking whether the C++ compiler understands 'auto'... no
checking whether the C++ compiler with -std=gnu++0x understands 'auto'... yes
checking whether the C++ compiler understands constexpr... yes
checking whether the C++ compiler understands rvalue references... yes
checking whether the C++ compiler understands static_assert... yes
checking whether the C++ compiler understands template alias... yes
checking whether the C++ compiler understands #pragma interface... yes
checking how to run the C++ preprocessor... g++ -std=gnu++0x -E
checking for ar... ar
checking for ld... ld
checking for nm... nm
checking for objcopy... objcopy
checking for ranlib... ranlib
checking for strip... strip
checking whether we are compiling for Linux... yes
checking for strerror... yes
checking for random... yes
checking for snprintf... yes
checking for strnlen... yes
checking for strtof... yes
checking for strtold... yes
checking for strtoul... yes
checking for tcgetpgrp... yes
checking for vsnprintf... yes
checking size of int... 4
checking size of long... 8
checking size of size_t... 8
checking size of ptrdiff_t... 8
checking size of void *... 8
checking whether char is unsigned... no
checking whether machine is indifferent to alignment... yes
checking size of long long... 8
checking for long long... yes
checking for int64_t... yes
checking for uint64_t... yes
checking whether long and int64_t are the same type... yes
checking whether long long and int64_t are the same type... no
checking whether byte ordering is bigendian... no
checking whether signed right shift is arithmetic... yes
checking for addressable va_list type... no
checking for __builtin_clz... yes
checking for __builtin_clzl... yes
checking for __builtin_clzll... yes
checking for __builtin_ffs... yes
checking for __builtin_ffsl... yes
checking for __builtin_ffsll... yes
checking for __sync_synchronize... yes
checking whether __sync_synchronize supports arguments... no
checking for __has_trivial_copy... yes
checking for __thread storage class support... yes
checking for ffs... yes
checking for ffsl... yes
checking for ffsll... yes
checking size of struct timeval... 16
checking for struct timespec... yes
checking size of struct timespec... 16
checking whether clock_gettime is declared... yes
checking for library containing clock_gettime... none required
checking for clock_gettime... yes
checking whether  is emulated... no
checking for pselect... yes
checking for sigaction... yes
checking for kqueue... no
checking for dlopen... no
checking for dlopen in -ldl... yes
checking whether linker accepts the -rdynamic flag... yes
checking compiler flags for building loadable modules... -shared
checking for large file support in C library... yes
checking size of off_t... 8
checking for getpagesize... yes
checking for working mmap... yes
checking for madvise... yes
checking whether madvise is declared... yes
checking for Linux System.map... /boot/System.map-3.13.0-96-generic
checking Linux version... 3.13.11
checking for Click Linux kernel extensions... no
checking for Click Linux kernel extensions for transmit notification... no
checking for read_net_skbcount kernel extension... no
checking for strlen kernel symbol... yes
checking for tulip_interrupt_hook kernel symbol... no
checking for files_lock kernel symbol... no
checking for files_lglock kernel symbol... no
checking for sb_lock kernel symbol... no
checking for dev_ioctl kernel symbol... no
checking for devinet_ioctl kernel symbol... no
checking for inet_ioctl kernel symbol... yes
checking for inet_ctl_sock_create kernel symbol... yes
checking for ... yes
checking whether struct if_data has ifi_datalen... no
checking whether struct sockaddr_in has sin_len... no
checking expat.h usability... yes
checking for XML_ParserCreateNS in -lexpat... yes
checking for Linux kernel compilation flags...   -I/usr/src/linux-headers-3.13.0-96-generic/arch/x86/include -Iarch/x86/include/generated  -Iinclude -I/usr/src/linux-headers-3.13.0-96-generic/arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I/usr/src/linux-headers-3.13.0-96-generic/include/uapi -Iinclude/generated/uapi -include /usr/src/linux-headers-3.13.0-96-generic/include/linux/kconfig.h -Iubuntu/include 
-I/usr/src/linux-headers-3.13.0-96-generic/arch/x86/include -Iarch/x86/include/generated  -Iinclude -I/usr/src/linux-headers-3.13.0-96-generic/arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I/usr/src/linux-headers-3.13.0-96-generic/include/uapi -Iinclude/generated/uapi -include /usr/src/linux-headers-3.13.0-96-generic/include/linux/kconfig.h -Iubuntu/include  -D__KERNEL__ 
-D__KERNEL__      -fno-strict-aliasing    -fno-delete-null-pointer-checks  -O2 -m64 -mno-mmx -mno-sse -mpreferred-stack-boundary=3 -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -pipe  -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx   -fstack-protector  -fno-omit-frame-pointer -fno-optimize-sibling-calls  -fno-var-tracking-assignments -pg  -mfentry -DCC_USING_FENTRY   -fno-strict-overflow -fconserve-stack   -DCC_HAVE_ASM_GOTO 
    -fno-strict-aliasing    -fno-delete-null-pointer-checks  -O2 -m64 -mno-mmx -mno-sse -mpreferred-stack-boundary=3 -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -pipe  -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx   -fstack-protector  -fno-omit-frame-pointer -fno-optimize-sibling-calls  -fno-var-tracking-assignments -pg  -mfentry -DCC_USING_FENTRY   -fno-strict-overflow -fconserve-stack   -DCC_HAVE_ASM_GOTO 
configure: making C++-safe versions of Linux kernel headers (may take a while)
checking for C++-includable kernel header files... no
configure: error: 
=========================================
Your Linux kernel header files cause errors when included by a C++ program.
Click modifies the Linux kernel's header files to make them work with
C++, using the program 'linuxmodule/click-linuxtool.pl'. It looks like
your kernel header files have features that tool doesn't know how to fix.
You can report this error to us on the Click mailing list, or, even better,
try to fix the error. See the config.log file for more information on the
error.
=========================================
magaboomchen commented 7 years ago

Hi, it also occurs in CentOS7.0 64bit(linux kernel 3.10.0-327). "./configure --enable-linuxmodule" says "Your Linux kernel header files cause errors when included by a C++ program.........."

sakuraliyi commented 7 years ago

Who soloved this problem,please help me!Thank you!

shashibici commented 7 years ago

I also has this problem with recent Ubuntu versions. (linux kernel 4.10).

infinadam commented 7 years ago

I have also tried this on 4.10 (xubuntu) and 4.13 (fedora lxde spin). I get the same error:

checking for C++-includable kernel header files... no
configure: error: 
=========================================

Your Linux kernel header files cause errors when included by a C++ program.

Click modifies the Linux kernel's header files to make them work with
C++, using the program 'linuxmodule/click-linuxtool.pl'. It looks like
your kernel header files have features that tool doesn't know how to fix.
You can report this error to us on the Click mailing list, or, even better,
try to fix the error. See the config.log file for more information on the
error.

I have tried creating a symbolic link between include/generated/autoconf.h and include/linux/autoconf.h per @tbarbette on #104, however I still get the same error. Any help would be greatly appreciated.

tbarbette commented 6 years ago

You'll have details of the error in one of the config*log. You'll want to see the output of click-linuxtool.pl.

tbarbette commented 6 years ago

For last versions of the kernel 4.x you may need my pending pull requests also...

infinadam commented 6 years ago

From what I could gather from config.log output, I've tried running click-linuxtool.pl on its own with the following arguments:

click-linuxtool.pl

Which is, near as I can tell given my woefully inadequate shell script experience, should be what configure also ran. I only got Died at linuxmodule/click-linuxtool.pl line 294. as a result.

The actual error I was able to dig out of config.log is as follows:

config.log

This is all under a virtual environment running Fedora 26, kernel 4.13.5.