[Etherlab-users] building etherlab ethercat on alma9 [SEC=OFFICIAL]

Fontana Nicola ntd at entidi.it
Fri Sep 27 12:34:36 CEST 2024


Il giorno ven, 27/09/2024 alle 03.57 +0000, WYKES, Jeremy ha scritto:
> ...
> I am seeking some help trying to build the ethercat master on Alma9. I am
> trying to first just build the simplest configuration I can (i.e. not an RT
> kernel), on a VMWare VM (not sure if this will create a problem). I have
> installed kernel-devel and it looks like I have the kernel sources in
> /usr/src/kernels/5.14.0-427.37.1.el9_4.x86_64
> 
> uname -srvmpio
> Linux 5.14.0-362.24.2.el9_3.x86_64 #1 SMP PREEMPT_DYNAMIC Sat Mar 30 14:11:54
> EDT 2024 x86_64 x86_64 x86_64 GNU/Linux
> 
> Following the instructions:
> 
>       ./bootstrap
>       ./configure --with-linux-dir=/usr/src/kernels/5.14.0-
> 427.37.1.el9_4.x86_64 --enable-generic
>       make
>       make modules
> 
> The build fails with:
> 
> In file included from ./include/linux/linkage.h:7,
>                  from ./include/linux/kernel.h:8,
>                  from ./include/linux/list.h:9,
>                  from ./include/linux/module.h:12,
>                  from /opt/igh/etherlab/master/module.c:28:
> /opt/igh/etherlab/master/module.c: In function ‘ec_init_module’:
> ./include/linux/export.h:17:22: error: passing argument 1 of ‘class_create’
> from incompatible pointer type [-Werror=incompatible-pointer-types]
>    17 | #define THIS_MODULE (&__this_module)
>       |                     ~^~~~~~~~~~~~~~~
>       |                      |
>       |                      struct module *
> /opt/igh/etherlab/master/module.c:115:26: note: in expansion of macro
> ‘THIS_MODULE’
>   115 |     class = class_create(THIS_MODULE, "EtherCAT");
>       |                          ^~~~~~~~~~~
> In file included from ./include/linux/device.h:31,
>                  from /opt/igh/etherlab/master/module.c:29:
> ./include/linux/device/class.h:230:54: note: expected ‘const char *’ but
> argument is of type ‘struct module *’
>   230 | struct class * __must_check class_create(const char *name);
>       |                                          ~~~~~~~~~~~~^~~~
> /opt/igh/etherlab/master/module.c:115:13: error: too many arguments to
> function ‘class_create’
>   115 |     class = class_create(THIS_MODULE, "EtherCAT");
>       |             ^~~~~~~~~~~~
> In file included from ./include/linux/device.h:31,
>                  from /opt/igh/etherlab/master/module.c:29:
> ./include/linux/device/class.h:230:29: note: declared here
>   230 | struct class * __must_check class_create(const char *name);
>       |                             ^~~~~~~~~~~~
> cc1: some warnings being treated as errors
> make[3]: *** [scripts/Makefile.build:299: /opt/igh/etherlab/master/module.o]
> Error 1
> make[2]: *** [scripts/Makefile.build:585: /opt/igh/etherlab/master] Error 2
> make[1]: *** [Makefile:1936: /opt/igh/etherlab] Error 2
> make[1]: Leaving directory '/usr/src/kernels/5.14.0-427.37.1.el9_4.x86_64'
> make: *** [Makefile:957: modules] Error 2
> ...

Hi Jeremy,

linux 6.4 has removed the `THIS_MODULE` argument. See the following
merge request for details:

    https://gitlab.com/etherlab.org/ethercat/-/merge_requests/73

No idea why your 5.14.0 kernel behaves like a 6.4 one: maybe they
backported 1aaba11da9aa or the linux headers you are including are for
some reason part of a linux kernel >= 6.4.

In both cases, apart from manually modifying the EtherCAT code, I don't
know how to solve properly.

Ciao.
-- 
Nicola



More information about the Etherlab-users mailing list