[SOLVED] Linux 5.12.9 compilation issues in swab.h, byteorder/little_endian.h
Linux - NewbieThis Linux forum is for members that are new to Linux.
Just starting out and have a question?
If it is not in the man pages or the how-to's this is the place!
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Linux 5.12.9 compilation issues in swab.h, byteorder/little_endian.h
Hi! I'm trying to compile the Linux 5.12.9 kernel (for a KISS Linux installation); I was originally trying out the Zen kernel but tried switching to the vanilla kernel from kernel.org and experienced the same issue. This issue was that, after generating a config with `make defconfig` and reviewing `make menuconfig` (although I did not edit anything in the config at all), `make -j4` failed very soon with a compiler error. I'm a first-timer at compiling the kernel, so I have no idea what went wrong, but I'm wondering if there are some options I ought to have changed in the config pre-compilation that I didn't? The make output told me the following (a lot of times):
Code:
/usr/include/linux/swab.h:171:8: error: unknown type name '__always_inline
[/usr/include/linux/swab.h:184:30: error: expected '=', ',', ';', 'asm' or '__attribute__' before '__swab32p'
and
Code:
/usr/include/linux/byteorder/little_endian.h:44:8: error: unknown type name '__always_inline'
/usr/include/linux/byteorder/little_endian.h:60:31: error: expected '=', ',', ';', 'asm' or '__attribute__' before '__cpu_to_le16p'
The errors are pretty similar, there only seem to be two types of errors and only in two files. I did install libelf, I'm on a working KISS chroot; any advice as to what could be causing the errors would be super helpful. My thanks in advance — and apologies if this is a question better suited to one of the other subforums!
Hi, thanks for the quick reply!! If I’m understanding correctly, you suggest using the config file for Slack’s huge kernel for my KISS system? Do you know where I can download the config file (or the whole sources) for the huge kernel? I tried looking around on Slack Wiki and googling but couldn’t really find much… Or did I misunderstand?
Of course you can use kernel - I am suggesting to use config file for Slackware kernel. You can customize it for your needs - but first of to build. To resolve the problem of source of issue.
DESCEND objtool
diff: unrecognized option: I
BusyBox v1.33.0 (2021-03-26 01:34:08 UTC) multi-call binary.
Usage: diff [-abBdiNqrTstw] [-L LABEL] [-S FILE] [-U LINES] FILE1 FILE2
Compare files line by line and output the differences between them.
This implementation supports unified diffs only.
-a Treat all files as text
-b Ignore changes in the amount of whitespace
-B Ignore changes whose lines are all blank
-d Try hard to find a smaller set of changes
-i Ignore case differences
-L Use LABEL instead of the filename in the unified header
-N Treat absent files as empty
-q Output only whether files differ
-r Recurse
-S Start with FILE when comparing directories
-T Make tabs line up by prefixing a tab when necessary
-s Report when two files are the same
-t Expand tabs to spaces in output
-U Output LINES lines of context
-w Ignore all whitespace
Warning: Kernel ABI header at 'tools/arch/x86/include/asm/inat.h' differs from latest version at 'arch/x86/include/asm/inat.h'
diff -u tools/arch/x86/include/asm/inat.h arch/x86/include/asm/inat.h
diff: unrecognized option: I
BusyBox v1.33.0 (2021-03-26 01:34:08 UTC) multi-call binary.
Usage: diff [-abBdiNqrTstw] [-L LABEL] [-S FILE] [-U LINES] FILE1 FILE2
Compare files line by line and output the differences between them.
This implementation supports unified diffs only.
-a Treat all files as text
-b Ignore changes in the amount of whitespace
-B Ignore changes whose lines are all blank
-d Try hard to find a smaller set of changes
-i Ignore case differences
-L Use LABEL instead of the filename in the unified header
-N Treat absent files as empty
-q Output only whether files differ
-r Recurse
-S Start with FILE when comparing directories
-T Make tabs line up by prefixing a tab when necessary
-s Report when two files are the same
-t Expand tabs to spaces in output
-U Output LINES lines of context
-w Ignore all whitespace
Warning: Kernel ABI header at 'tools/arch/x86/include/asm/insn.h' differs from latest version at 'arch/x86/include/asm/insn.h'
diff -u tools/arch/x86/include/asm/insn.h arch/x86/include/asm/insn.h
diff: unrecognized option: I
BusyBox v1.33.0 (2021-03-26 01:34:08 UTC) multi-call binary.
Usage: diff [-abBdiNqrTstw] [-L LABEL] [-S FILE] [-U LINES] FILE1 FILE2
Compare files line by line and output the differences between them.
This implementation supports unified diffs only.
-a Treat all files as text
-b Ignore changes in the amount of whitespace
-B Ignore changes whose lines are all blank
-d Try hard to find a smaller set of changes
-i Ignore case differences
-L Use LABEL instead of the filename in the unified header
-N Treat absent files as empty
-q Output only whether files differ
-r Recurse
-S Start with FILE when comparing directories
-T Make tabs line up by prefixing a tab when necessary
-s Report when two files are the same
-t Expand tabs to spaces in output
-U Output LINES lines of context
-w Ignore all whitespace
Warning: Kernel ABI header at 'tools/arch/x86/lib/inat.c' differs from latest version at 'arch/x86/lib/inat.c'
diff -u tools/arch/x86/lib/inat.c arch/x86/lib/inat.c
diff: unrecognized option: I
BusyBox v1.33.0 (2021-03-26 01:34:08 UTC) multi-call binary.
Usage: diff [-abBdiNqrTstw] [-L LABEL] [-S FILE] [-U LINES] FILE1 FILE2
Compare files line by line and output the differences between them.
This implementation supports unified diffs only.
-a Treat all files as text
-b Ignore changes in the amount of whitespace
-B Ignore changes whose lines are all blank
-d Try hard to find a smaller set of changes
-i Ignore case differences
-L Use LABEL instead of the filename in the unified header
-N Treat absent files as empty
-q Output only whether files differ
-r Recurse
-S Start with FILE when comparing directories
-T Make tabs line up by prefixing a tab when necessary
-s Report when two files are the same
-t Expand tabs to spaces in output
-U Output LINES lines of context
-w Ignore all whitespace
Warning: Kernel ABI header at 'tools/arch/x86/lib/insn.c' differs from latest version at 'arch/x86/lib/insn.c'
diff -u tools/arch/x86/lib/insn.c arch/x86/lib/insn.c
CALL scripts/atomic/check-atomics.sh
CALL scripts/checksyscalls.sh
CC /usr/src/linux/linux-5.12.9/tools/objtool/arch/x86/decode.o
In file included from /usr/include/linux/byteorder/little_endian.h:13,
from /usr/include/asm/byteorder.h:5,
from /usr/src/linux/linux-5.12.9/tools/arch/x86/include/asm/insn.h:10,
from arch/x86/decode.c:10:
/usr/include/linux/swab.h:136:23: error: expected ';' before 'unsigned'
136 | static __always_inline unsigned long __swab(const unsigned long y)
| ^~~~~~~~~
| ;
/usr/include/linux/swab.h:171:8: error: unknown type name '__always_inline'
171 | static __always_inline __u16 __swab16p(const __u16 *p)
| ^~~~~~~~~~~~~~~
/usr/include/linux/swab.h:171:30: error: expected '=', ',', ';', 'asm' or '__attribute__' before '__swab16p'
171 | static __always_inline __u16 __swab16p(const __u16 *p)
| ^~~~~~~~~
/usr/include/linux/swab.h:184:8: error: unknown type name '__always_inline'
184 | static __always_inline __u32 __swab32p(const __u32 *p)
| ^~~~~~~~~~~~~~~
/usr/include/linux/swab.h:184:30: error: expected '=', ',', ';', 'asm' or '__attribute__' before '__swab32p'
184 | static __always_inline __u32 __swab32p(const __u32 *p)
| ^~~~~~~~~
/usr/include/linux/swab.h:197:8: error: unknown type name '__always_inline'
197 | static __always_inline __u64 __swab64p(const __u64 *p)
| ^~~~~~~~~~~~~~~
/usr/include/linux/swab.h:197:30: error: expected '=', ',', ';', 'asm' or '__attribute__' before '__swab64p'
197 | static __always_inline __u64 __swab64p(const __u64 *p)
| ^~~~~~~~~
/usr/include/linux/swab.h:252:23: error: expected ';' before 'void'
252 | static __always_inline void __swab32s(__u32 *p)
| ^~~~~
| ;
/usr/include/linux/swab.h:265:23: error: expected ';' before 'void'
265 | static __always_inline void __swab64s(__u64 *p)
| ^~~~~
| ;
In file included from /usr/include/asm/byteorder.h:5,
from /usr/src/linux/linux-5.12.9/tools/arch/x86/include/asm/insn.h:10,
from arch/x86/decode.c:10:
/usr/include/linux/byteorder/little_endian.h:44:8: error: unknown type name '__always_inline'
44 | static __always_inline __le64 __cpu_to_le64p(const __u64 *p)
| ^~~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:44:31: error: expected '=', ',', ';', 'asm' or '__attribute__' before '__cpu_to_le64p'
44 | static __always_inline __le64 __cpu_to_le64p(const __u64 *p)
| ^~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:48:8: error: unknown type name '__always_inline'
48 | static __always_inline __u64 __le64_to_cpup(const __le64 *p)
| ^~~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:48:30: error: expected '=', ',', ';', 'asm' or '__attribute__' before '__le64_to_cpup'
48 | static __always_inline __u64 __le64_to_cpup(const __le64 *p)
| ^~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:52:8: error: unknown type name '__always_inline'
52 | static __always_inline __le32 __cpu_to_le32p(const __u32 *p)
| ^~~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:52:31: error: expected '=', ',', ';', 'asm' or '__attribute__' before '__cpu_to_le32p'
52 | static __always_inline __le32 __cpu_to_le32p(const __u32 *p)
| ^~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:56:8: error: unknown type name '__always_inline'
56 | static __always_inline __u32 __le32_to_cpup(const __le32 *p)
| ^~~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:56:30: error: expected '=', ',', ';', 'asm' or '__attribute__' before '__le32_to_cpup'
56 | static __always_inline __u32 __le32_to_cpup(const __le32 *p)
| ^~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:60:8: error: unknown type name '__always_inline'
60 | static __always_inline __le16 __cpu_to_le16p(const __u16 *p)
| ^~~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:60:31: error: expected '=', ',', ';', 'asm' or '__attribute__' before '__cpu_to_le16p'
60 | static __always_inline __le16 __cpu_to_le16p(const __u16 *p)
| ^~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:64:8: error: unknown type name '__always_inline'
64 | static __always_inline __u16 __le16_to_cpup(const __le16 *p)
| ^~~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:64:30: error: expected '=', ',', ';', 'asm' or '__attribute__' before '__le16_to_cpup'
64 | static __always_inline __u16 __le16_to_cpup(const __le16 *p)
| ^~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:68:8: error: unknown type name '__always_inline'
68 | static __always_inline __be64 __cpu_to_be64p(const __u64 *p)
| ^~~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:68:31: error: expected '=', ',', ';', 'asm' or '__attribute__' before '__cpu_to_be64p'
68 | static __always_inline __be64 __cpu_to_be64p(const __u64 *p)
| ^~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:72:8: error: unknown type name '__always_inline'
72 | static __always_inline __u64 __be64_to_cpup(const __be64 *p)
| ^~~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:72:30: error: expected '=', ',', ';', 'asm' or '__attribute__' before '__be64_to_cpup'
72 | static __always_inline __u64 __be64_to_cpup(const __be64 *p)
| ^~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:76:8: error: unknown type name '__always_inline'
76 | static __always_inline __be32 __cpu_to_be32p(const __u32 *p)
| ^~~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:76:31: error: expected '=', ',', ';', 'asm' or '__attribute__' before '__cpu_to_be32p'
76 | static __always_inline __be32 __cpu_to_be32p(const __u32 *p)
| ^~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:80:8: error: unknown type name '__always_inline'
80 | static __always_inline __u32 __be32_to_cpup(const __be32 *p)
| ^~~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:80:30: error: expected '=', ',', ';', 'asm' or '__attribute__' before '__be32_to_cpup'
80 | static __always_inline __u32 __be32_to_cpup(const __be32 *p)
| ^~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:84:8: error: unknown type name '__always_inline'
84 | static __always_inline __be16 __cpu_to_be16p(const __u16 *p)
| ^~~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:84:31: error: expected '=', ',', ';', 'asm' or '__attribute__' before '__cpu_to_be16p'
84 | static __always_inline __be16 __cpu_to_be16p(const __u16 *p)
| ^~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:88:8: error: unknown type name '__always_inline'
88 | static __always_inline __u16 __be16_to_cpup(const __be16 *p)
| ^~~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:88:30: error: expected '=', ',', ';', 'asm' or '__attribute__' before '__be16_to_cpup'
88 | static __always_inline __u16 __be16_to_cpup(const __be16 *p)
| ^~~~~~~~~~~~~~
make[4]: *** [/usr/src/linux/linux-5.12.9/tools/build/Makefile.build:97: /usr/src/linux/linux-5.12.9/tools/objtool/arch/x86/decode.o] Error 1
make[3]: *** [/usr/src/linux/linux-5.12.9/tools/build/Makefile.build:139: arch/x86] Error 2
make[2]: *** [Makefile:56: /usr/src/linux/linux-5.12.9/tools/objtool/objtool-in.o] Error 2
make[1]: *** [Makefile:69: objtool] Error 2
make: *** [Makefile:1978: tools/objtool] Error 2
Actually, I think I figured it out. See https://k1sslinux.org/news/20210507a; fixing the include issue in the source code did the trick. Thanks anyways!
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.