OK, yeah I had mistakenly put --ldflags in the xeno-config line for  CFLAGS
=
This was also problem:
LDLIBS= $(shell $(XENOCONFIG) --skin=native --ldflags) \
$(shell $(XENOCONFIG) --skin=rtdm --ldflags) \
$(shell $(XENOCONFIG) --skin=posix --ldflags)
That used to work in Xenomai 2.6 but not in Xenomai 3.1.
All I needed was
LDLIBS= $(shell $(XENOCONFIG) --skin=alchemy --ldflags)

My larger (30K lines) app compiles successfully now.
Thanks.  -C Smith

On Wed, Aug 11, 2021 at 11:04 PM Jan Kiszka <jan.kis...@siemens.com> wrote:

> On 12.08.21 07:50, C Smith wrote:
> > Hi Jan,Thanks for your prompt reply.  I reduced my very large app to
> > about 200 lines, it only starts one periodic process. but I still get
> > this error during linkage:
> >
> > /usr/xenomai/lib/xenomai/bootstrap.o: In function `xenomai_main':
> > /usr/src/xenomai-3.1/lib/boilerplate/init/bootstrap.c:94: multiple
> > definition of `xenomai_main'
> >
> /usr/xenomai/lib/xenomai/bootstrap.o:/usr/src/xenomai-3.1/lib/boilerplate/init/bootstrap.c:94:
> > first defined here
> > /usr/xenomai/lib/xenomai/bootstrap.o:(.rodata+0x0): multiple definition
> > of `xenomai_auto_bootstrap'
> > /usr/xenomai/lib/xenomai/bootstrap.o:(.rodata+0x0): first defined here
> > /usr/xenomai/lib/xenomai/bootstrap.o: In function `xenomai_main':
> > /usr/src/xenomai-3.1/lib/boilerplate/init/bootstrap.c:94: multiple
> > definition of `xenomai_main'
> >
> /usr/xenomai/lib/xenomai/bootstrap.o:/usr/src/xenomai-3.1/lib/boilerplate/init/bootstrap.c:94:
> > first defined here
> > /usr/xenomai/lib/xenomai/bootstrap.o:(.rodata+0x0): multiple definition
> > of `xenomai_auto_bootstrap'
> > /usr/xenomai/lib/xenomai/bootstrap.o:(.rodata+0x0): first defined here
> > /usr/xenomai/lib/xenomai/bootstrap.o: In function `xenomai_main':
> > /usr/src/xenomai-3.1/lib/boilerplate/init/bootstrap.c:94: multiple
> > definition of `xenomai_main'
> >
> /usr/xenomai/lib/xenomai/bootstrap.o:/usr/src/xenomai-3.1/lib/boilerplate/init/bootstrap.c:94:
> > first defined here
> > /usr/xenomai/lib/xenomai/bootstrap.o:(.rodata+0x0): multiple definition
> > of `xenomai_auto_bootstrap'
> > /usr/xenomai/lib/xenomai/bootstrap.o:(.rodata+0x0): first defined here
> > collect2: error: ld returned 1 exit status
> > make[1]: *** [<builtin>: myapp] Error 1
> >
> > I had used your advice to get the compiler args in my Makefile with:
> > /usr/xenomai/bin/xeno-config --skin=native --cflags --ldflags
> > The resulting command line is:
> >
> > gcc -g3 -m32 -I/usr/xenomai/include/trank -D__XENO_COMPAT__
> > -I/usr/xenomai/include/cobalt
> > -I/usr/xenomai/include -m32 -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
> > -D_REENTRANT -fasynchronous-unwind-tables
> > -D__COBALT__ -I/usr/xenomai/include/alchemy -I/usr/xenomai/include/rtdm
> > -Wl,--no-as-needed -ltrank
> > -Wl,@/usr/xenomai/lib/modechk.wrappers -lalchemy -lcopperplate
> > /usr/xenomai/lib/xenomai/bootstrap.o
> > -Wl,--wrap=main -Wl,--dynamic-list=/usr/xenomai/lib/dynlist.ld
> > -L/usr/xenomai/lib -lcobalt -lmodechk
> > -lpthread -lrt -m32   -lfuse -pthread -I/usr/include/libxml2 -I"SOEM/"
> > -I"SOEM/osal" -I"SOEM/oshw/linux"
> > -I"SOEM/soem" -I"../include/nanopb"    -Xlinker -rpath -Xlinker
> > /usr/xenomai/lib  myapp.c ../include/myapp.h
> > ../include/dia_dev_myapp.h ../include/crc_table.h ../include/dacdefs.h
> > ../include/version.h
> > ../include/canopen_drives.h ../include/adcdefs.h
> > ../include/myapp_version.h ../include/canodefs.h
> > ../include/preproc_myapp.h ../include/myapp_mem_manager_data.h
> > ../include/comm_dta_myapp.h ../include/comproto.h
> > ../modules/rtdinsync.h quad.o dac.o adc.o SOEM/lib/linux/liboshw.a
> > SOEM/lib/linux/libosal.a SOEM/lib/linux/libsoem.a
> > ../include/nanopb/nanopb.a  -Wl,--no-as-needed -ltrank
> > -Wl,@/usr/xenomai/lib/modechk.wrappers -lalchemy -lcopperplate
> > /usr/xenomai/lib/xenomai/bootstrap.o -Wl,--wrap=main
> > -Wl,--dynamic-list=/usr/xenomai/lib/dynlist.ld
> > -L/usr/xenomai/lib -lcobalt -lmodechk -lpthread -lrt -m32   -lfuse
> > -pthread  -Wl,--no-as-needed
> > -Wl,@/usr/xenomai/lib/cobalt.wrappers
> -Wl,@/usr/xenomai/lib/modechk.wrappers
> > /usr/xenomai/lib/xenomai/bootstrap.o -Wl,--wrap=main
> > -Wl,--dynamic-list=/usr/xenomai/lib/dynlist.ld
> > -L/usr/xenomai/lib -lcobalt -lmodechk -lpthread -lrt -m32   -lfuse
> > -pthread  -Wl,--no-as-needed
> > -Wl,@/usr/xenomai/lib/cobalt.wrappers
> -Wl,@/usr/xenomai/lib/modechk.wrappers
> > /usr/xenomai/lib/xenomai/bootstrap.o -Wl,--wrap=main
> > -Wl,--dynamic-list=/usr/xenomai/lib/dynlist.ld
> > -L/usr/xenomai/lib -lcobalt -lmodechk -lpthread -lrt -m32   -lfuse
> > -pthread  -lxml2 -lz -llzma -lm
> > -ldl -L"SOEM/lib/linux" -Wl,--start-group -loshw -losal -lsoem
> > -Wl,--end-group -lm -o myapp
> >
> > What is going wrong with the linkage?  Thanks, C Smith
> >
>
> Something is broken in your makefile. If you look at the end of the
> resulting gcc call above, you see e.g. bootstrap.o being listed multiple
> times (which explains the error, obviously). This is not coming from
> xeno-config. So check your local setup, or just do
>
> gcc $(xeno-config ...) -o my-app my-app.c -I my-includes
>
> Jan
>
> --
> Siemens AG, T RDA IOT
> Corporate Competence Center Embedded Linux
>

Reply via email to