@Grotius
I use symbolic links in /bin and /rtlib so the binaries are always up to date. lcec_conf loads OK and its 2 pins show up in hal.
@shameless
I copied (just the) realtime.mk file from 0.9.1, and it cleared up the "undefined symbol: ecrt_slave_config_sdo" problem. Thanks!
It went on to complain about "undefined symbol: rtapi_mutex_get". This problem has shown up in this forum (see Rene 6/6/18, Nico 10/24/18, Nico 10/28/18, Hawkeye 1/10/19 step 6). So I added #include rtapi_mutex.h in lcec_main.c and changed permissions to /dev/EtherCAT0, and now both lcec_conf and lcec load, and hal is full of lcec pins to play with.
Woo hoo!
Sadly, my (one and only) servo drive exploded in a flash of sparks and smoke the other day, and I can't play with my new pins until I get it back from warranty repair. SAD!!
I am one of those people who wonders what make is really doing under all those covers, so I tried to figure out what, in the 0.9.1 config.mk, makes the difference.
When it gets right down to issuing a gcc command, the 091 and the latest gcc command for .c -> .o differs by:
Code:
common: gcc -o lcec_em7004.o -Os -g -I. -I/home/reid/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/home/reid/linuxcnc-dev/include -DSIM -fPIC -c lcec_em7004.c
091 : -Os
new : -Wframe-larger-than=2560
I doubt that this is part of the problem.
The command line for the link step .o -> .so differs by:
Code:
common: gcc -shared -o lcec.so -Wl,-rpath,/home/reid/linuxcnc-dev/lib -L/home/reid/linuxcnc-dev/lib -llinuxcnchal -lethercat [object-name-list]
091 : -lrt
new : -lm -Bsymbolic -Wl,--version-script,lcec.ver
I could not figure out where, in all of make's mechanics, the "-Bsymbolic -Wl,--version-script,lcec.ver" comes from.
Their presence, though, seems to cause a 2-step link which I am totally unfamiliar with. Something like:
Code:
ld -d -r -o lcec.tmp [obj-list]
objcopy -j .rtapi_export -O binary lcec.tmp lcec.sym
(echo '{ global : '; tr -s '\0' < lcec.sym | xargs -r0 printf '%s;\n' | grep .; echo 'local : * ; };') > lcec.ver
gcc -shared -Bsymbolic -Wl,-rpath,/home/reid/linuxcnc-dev/lib -L/home/reid/linuxcnc-dev/lib -llinuxcnchal -lethercat -lm -Wl,--version-script,lcec.ver -o lcec.so [obj-list]
Can anybody out there give us a bird's eye view of what make is trying to do here?
Admit it! We're all a little bit confused and a little bit curious!
Thanks
Reid