OS: Gentoo slibtool: 8a41491 ola: 0.10.9
Gentoo
0.10.9
With slibtool it fails.
ld: cannot find -lolaartnetconf: No such file or directory ld: cannot find -lolae131conf: No such file or directory
rdlibtool --tag=CXX --mode=link x86_64-gentoo-linux-musl-g++ -I./include -I./include -Wall -Wformat -W -fvisibility-inlines-hidden -O2 -pipe -std=gnu++11 -rdynamic -Wl,-O1 -Wl,--as-needed -o olad/olad olad/Olad.o olad/libolaserver.la common/libolacommon.la ola/libola.la rdlibtool: lconf: {.name="libtool"}. rdlibtool: fdcwd: {.fdcwd=AT_FDCWD, .realpath="/var/tmp/portage/app-misc/ola-0.10.9-r1/work/ola-0.10.9"}. rdlibtool: lconf: fstatat(AT_FDCWD,".",...) = 0 {.st_dev = 65026, .st_ino = 205461287}. rdlibtool: lconf: openat(AT_FDCWD,"libtool",O_RDONLY,0) = 3. rdlibtool: lconf: found "/var/tmp/portage/app-misc/ola-0.10.9-r1/work/ola-0.10.9/libtool". rdlibtool: link: x86_64-gentoo-linux-musl-g++ olad/Olad.o -I./include -I./include -Wall -Wformat -W -fvisibility-inlines-hidden -O2 -pipe -std=gnu++11 -rdynamic -Wl,-O1 -Wl,--as-needed -Lolad/.libs -lolaserver -Lolad/../plugins/artnet/.libs -lolaartnet -Lolad/plugins/artnet/../../olad/plugin_api/.libs -lolaserverplugininterface -Lolad/plugins/artnet/olad/plugin_api/../../common/.libs -lolacommon -lresolv -lprotobuf -Lolad/plugins/artnet/olad/plugin_api/../../ola/.libs -lola -Lolad/plugins/artnet/olad/plugin_api/ola/../common/.libs -lolacommon -lresolv -lprotobuf -Lolad/plugins/artnet/plugins/artnet/../../common/.libs -Lolad/plugins/artnet/./messages/.libs -lolaartnetconf -lprotobuf -Lolad/../plugins/dummy/.libs -loladummy -Lolad/plugins/dummy/../../common/.libs -lolacommon -lresolv -lprotobuf -Lolad/plugins/dummy/../../olad/plugin_api/.libs -lolaserverplugininterface -Lolad/plugins/dummy/olad/plugin_api/../../common/.libs -Lolad/plugins/dummy/olad/plugin_api/../../ola/.libs -lola -Lolad/plugins/dummy/olad/plugin_api/ola/../common/.libs -Lolad/../plugins/e131/.libs -lolae131 -Lolad/plugins/e131/../../olad/plugin_api/.libs -lolaserverplugininterface -Lolad/plugins/e131/olad/plugin_api/../../common/.libs -lolacommon -lresolv -lprotobuf -Lolad/plugins/e131/olad/plugin_api/../../ola/.libs -lola -Lolad/plugins/e131/olad/plugin_api/ola/../common/.libs -Lolad/plugins/e131/./messages/.libs -lolae131conf -lprotobuf -luuid -Lolad/plugins/e131/libs/acn/../../common/.libs -lolacommon -Lolad/plugins/e131/libs/acn/libs/acn/../../common/.libs -Lolad/../plugins/espnet/.libs -lolaespnet -Lolad/plugins/espnet/../../common/.libs -lolacommon -lresolv -lprotobuf -Lolad/plugins/espnet/../../olad/plugin_api/.libs -lolaserverplugininterface -Lolad/plugins/espnet/olad/plugin_api/../../common/.libs -Lolad/plugins/espnet/olad/plugin_api/../../ola/.libs -lola -Lolad/plugins/espnet/olad/plugin_api/ola/../common/.libs -Lolad/../plugins/gpio/.libs -lolagpio -Lolad/plugins/gpio/../../common/.libs -lolacommon -lresolv -lprotobuf -Lolad/plugins/gpio/../../olad/plugin_api/.libs -lolaserverplugininterface -Lolad/plugins/gpio/olad/plugin_api/../../common/.libs -Lolad/plugins/gpio/olad/plugin_api/../../ola/.libs -lola -Lolad/plugins/gpio/olad/plugin_api/ola/../common/.libs -Lolad/plugins/gpio/./.libs -lolagpiocore -Lolad/plugins/gpio/plugins/gpio/../../common/.libs -lolacommon -lresolv -lprotobuf -Lolad/../plugins/karate/.libs -lolakarate -Lolad/plugins/karate/../../common/.libs -lolacommon -lresolv -lprotobuf -Lolad/plugins/karate/../../olad/plugin_api/.libs -lolaserverplugininterface -Lolad/plugins/karate/olad/plugin_api/../../common/.libs -Lolad/plugins/karate/olad/plugin_api/../../ola/.libs -lola -Lolad/plugins/karate/olad/plugin_api/ola/../common/.libs -Lolad/../plugins/kinet/.libs -lolakinet -Lolad/plugins/kinet/../../olad/plugin_api/.libs -lolaserverplugininterface -Lolad/plugins/kinet/olad/plugin_api/../../common/.libs -lolacommon -lresolv -lprotobuf -Lolad/plugins/kinet/olad/plugin_api/../../ola/.libs -lola -Lolad/plugins/kinet/olad/plugin_api/ola/../common/.libs -Lolad/plugins/kinet/plugins/kinet/../../common/.libs -Lolad/../plugins/milinst/.libs -lolamilinst -Lolad/plugins/milinst/../../common/.libs -lolacommon -lresolv -lprotobuf -Lolad/plugins/milinst/../../olad/plugin_api/.libs -lolaserverplugininterface -Lolad/plugins/milinst/olad/plugin_api/../../common/.libs -Lolad/plugins/milinst/olad/plugin_api/../../ola/.libs -lola -Lolad/plugins/milinst/olad/plugin_api/ola/../common/.libs -Lolad/../plugins/opendmx/.libs -lolaopendmx -Lolad/plugins/opendmx/../../common/.libs -lolacommon -lresolv -lprotobuf -Lolad/plugins/opendmx/../../olad/plugin_api/.libs -lolaserverplugininterface -Lolad/plugins/opendmx/olad/plugin_api/../../common/.libs -Lolad/plugins/opendmx/olad/plugin_api/../../ola/.libs -lola -Lolad/plugins/opendmx/olad/plugin_api/ola/../common/.libs -Lolad/../plugins/openpixelcontrol/.libs -lolaopenpixelcontrol -Lolad/plugins/openpixelcontrol/../../common/.libs -lolacommon -lresolv -lprotobuf -Lolad/plugins/openpixelcontrol/../../olad/plugin_api/.libs -lolaserverplugininterface -Lolad/plugins/openpixelcontrol/olad/plugin_api/../../common/.libs -Lolad/plugins/openpixelcontrol/olad/plugin_api/../../ola/.libs -lola -Lolad/plugins/openpixelcontrol/olad/plugin_api/ola/../common/.libs -Lolad/plugins/openpixelcontrol/plugins/openpixelcontrol/../../common/.libs -Lolad/../plugins/pathport/.libs -lolapathport -Lolad/plugins/pathport/../../common/.libs -lolacommon -lresolv -lprotobuf -Lolad/plugins/pathport/../../olad/plugin_api/.libs -lolaserverplugininterface -Lolad/plugins/pathport/olad/plugin_api/../../common/.libs -Lolad/plugins/pathport/olad/plugin_api/../../ola/.libs -lola -Lolad/plugins/pathport/olad/plugin_api/ola/../common/.libs -Lolad/../plugins/renard/.libs -lolarenard -Lolad/plugins/renard/../../common/.libs -lolacommon -lresolv -lprotobuf -Lolad/plugins/renard/../../olad/plugin_api/.libs -lolaserverplugininterface -Lolad/plugins/renard/olad/plugin_api/../../common/.libs -Lolad/plugins/renard/olad/plugin_api/../../ola/.libs -lola -Lolad/plugins/renard/olad/plugin_api/ola/../common/.libs -Lolad/../plugins/sandnet/.libs -lolasandnet -Lolad/plugins/sandnet/../../common/.libs -lolacommon -lresolv -lprotobuf -Lolad/plugins/sandnet/../../olad/plugin_api/.libs -lolaserverplugininterface -Lolad/plugins/sandnet/olad/plugin_api/../../common/.libs -Lolad/plugins/sandnet/olad/plugin_api/../../ola/.libs -lola -Lolad/plugins/sandnet/olad/plugin_api/ola/../common/.libs -Lolad/../plugins/shownet/.libs -lolashownet -Lolad/plugins/shownet/../../common/.libs -lolacommon -lresolv -lprotobuf -Lolad/plugins/shownet/../../olad/plugin_api/.libs -lolaserverplugininterface -Lolad/plugins/shownet/olad/plugin_api/../../common/.libs -Lolad/plugins/shownet/olad/plugin_api/../../ola/.libs -lola -Lolad/plugins/shownet/olad/plugin_api/ola/../common/.libs -Lolad/../plugins/spi/.libs -lolaspi -Lolad/plugins/spi/../../common/.libs -lolacommon -lresolv -lprotobuf -Lolad/plugins/spi/../../olad/plugin_api/.libs -lolaserverplugininterface -Lolad/plugins/spi/olad/plugin_api/../../common/.libs -Lolad/plugins/spi/olad/plugin_api/../../ola/.libs -lola -Lolad/plugins/spi/olad/plugin_api/ola/../common/.libs -Lolad/plugins/spi/./.libs -lolaspicore -Lolad/plugins/spi/plugins/spi/../../common/.libs -lolacommon -lresolv -lprotobuf -Lolad/../plugins/stageprofi/.libs -lolastageprofi -Lolad/plugins/stageprofi/../../common/.libs -lolacommon -lresolv -lprotobuf -Lolad/plugins/stageprofi/../../olad/plugin_api/.libs -lolaserverplugininterface -Lolad/plugins/stageprofi/olad/plugin_api/../../common/.libs -Lolad/plugins/stageprofi/olad/plugin_api/../../ola/.libs -lola -Lolad/plugins/stageprofi/olad/plugin_api/ola/../common/.libs -Lolad/../plugins/uartdmx/.libs -lolauartdmx -Lolad/plugins/uartdmx/../../common/.libs -lolacommon -lresolv -lprotobuf -Lolad/plugins/uartdmx/../../olad/plugin_api/.libs -lolaserverplugininterface -Lolad/plugins/uartdmx/olad/plugin_api/../../common/.libs -Lolad/plugins/uartdmx/olad/plugin_api/../../ola/.libs -lola -Lolad/plugins/uartdmx/olad/plugin_api/ola/../common/.libs -Lolad/../plugins/usbpro/.libs -lolausbpro -Lolad/plugins/usbpro/../../olad/plugin_api/.libs -lolaserverplugininterface -Lolad/plugins/usbpro/olad/plugin_api/../../common/.libs -lolacommon -lresolv -lprotobuf -Lolad/plugins/usbpro/olad/plugin_api/../../ola/.libs -lola -Lolad/plugins/usbpro/olad/plugin_api/ola/../common/.libs -Lolad/plugins/usbpro/plugins/usbpro/../../common/.libs -Lolad/plugins/usbpro/./messages/.libs -lolausbproconf -lprotobuf -Lolad/../common/.libs -lolacommon -lresolv -Lolad/../ola/.libs -lola -Lolad/ola/../common/.libs -Lolad/./plugin_api/.libs -lolaserverplugininterface -o olad/.libs/olad /usr/lib/gcc/x86_64-gentoo-linux-musl/13/../../../../x86_64-gentoo-linux-musl/bin/ld: cannot find -lolaartnetconf: No such file or directory /usr/lib/gcc/x86_64-gentoo-linux-musl/13/../../../../x86_64-gentoo-linux-musl/bin/ld: cannot find -lolae131conf: No such file or directory collect2: error: ld returned 1 exit status rdlibtool: error logged in slbt_exec_link_create_executable(), line 245: flow error: unexpected condition or other. rdlibtool: < returned to > slbt_exec_link(), line 471. make[2]: *** [Makefile:9747: olad/olad] Error 2 make[2]: Leaving directory '/var/tmp/portage/app-misc/ola-0.10.9-r1/work/ola-0.10.9' make[1]: *** [Makefile:16481: all-recursive] Error 1 make[1]: Leaving directory '/var/tmp/portage/app-misc/ola-0.10.9-r1/work/ola-0.10.9' make: *** [Makefile:7554: all] Error 2
Where slibtool tries to link with:
-Lolad/plugins/e131/./messages/.libs -lolae131conf -Lolad/plugins/artnet/./messages/.libs -lolaartnetconf
Where the path to the libraries is wrong.
./plugins/e131/messages/libolae131conf.la ./plugins/artnet/messages/libolaartnetconf.la
Where libolae131conf.la is added to plugins_e131_libolae131_la_LIBADD in plugins/e131/Makefile.mk.
libolae131conf.la
plugins_e131_libolae131_la_LIBADD
plugins/e131/Makefile.mk
plugins_e131_libolae131_la_LIBADD = \ olad/plugin_api/libolaserverplugininterface.la \ plugins/e131/messages/libolae131conf.la \ libs/acn/libolae131core.la
And libolaartnetconf.la in added to plugins_artnet_libolaartnet_la_LIBADD in plugins/artnet/Makefile.mk.
libolaartnetconf.la
plugins_artnet_libolaartnet_la_LIBADD
plugins/artnet/Makefile.mk
plugins_artnet_libolaartnet_la_LIBADD = \ olad/plugin_api/libolaserverplugininterface.la \ plugins/artnet/libolaartnetnode.la \ plugins/artnet/messages/libolaartnetconf.la
And both Makefile.mk files are included in plugins/Makefile.mk.
Makefile.mk
plugins/Makefile.mk
include plugins/artnet/Makefile.mk include plugins/dummy/Makefile.mk include plugins/espnet/Makefile.mk include plugins/ftdidmx/Makefile.mk include plugins/gpio/Makefile.mk include plugins/karate/Makefile.mk include plugins/kinet/Makefile.mk include plugins/milinst/Makefile.mk include plugins/opendmx/Makefile.mk include plugins/openpixelcontrol/Makefile.mk include plugins/osc/Makefile.mk include plugins/pathport/Makefile.mk include plugins/renard/Makefile.mk include plugins/sandnet/Makefile.mk include plugins/shownet/Makefile.mk include plugins/spi/Makefile.mk include plugins/stageprofi/Makefile.mk include plugins/usbdmx/Makefile.mk if !USING_WIN32 include plugins/usbpro/Makefile.mk include plugins/dmx4linux/Makefile.mk include plugins/e131/Makefile.mk include plugins/uartdmx/Makefile.mk endif
Which is included in the main Makfile.am.
Makfile.am
# The includes # ----------------------------------------------------------------------------- # Since `make install` relinks the libraries, this should be in the order in # which libraries depend on each other. e.g. common, plugin_api, plugins, server. include common/Makefile.mk include data/Makefile.mk include debian/Makefile.mk include doxygen/Makefile.mk include examples/Makefile.mk include include/Makefile.mk include javascript/Makefile.mk include man/Makefile.mk include libs/Makefile.mk include ola/Makefile.mk # olad/plugin_api/Makefile.mk is included directly due to the order of # dependencies between them; we need to build olad/plugin_api, then the # plugins, then olad include olad/plugin_api/Makefile.mk include plugins/Makefile.mk include olad/Makefile.mk include protoc/Makefile.mk include python/Makefile.mk include scripts/Makefile.mk include tools/Makefile.mk
The way these are being included seem to confuse slibtool, as is already known GNU libtool links directly with the .so files on Linux.
.so
Gentoo issue: https://bugs.gentoo.org/915121 Upstream: https://github.com/OpenLightingProject/ola
Looking at tmp1 for -lolaartnetconf.
-lolaartnetconf
$ find . -type f -name '*tmp1' | xargs grep -- -lolaartnetconf ./olad/.libs/libolaserver.so.slibtool.deps.tmp1:-lolaartnetconf ./plugins/artnet/.libs/libolaartnet.so.slibtool.deps.tmp1:-lolaartnetconf
./olad/.libs/libolaserver.so.slibtool.deps.tmp1
-Lplugins/artnet/./messages/.libs -lolaartnetconf
./plugins/artnet/.libs/libolaartnet.so.slibtool.deps.tmp1
-L../../olad/plugin_api/.libs -lolaserverplugininterface -Lolad/plugin_api/../../common/.libs -lolacommon -lresolv -lprotobuf -lprotobuf -lprotobuf -Lolad/plugin_api/../../ola/.libs -lola -Lolad/plugin_api/ola/../common/.libs -lolacommon -lresolv -lprotobuf -lprotobuf -lprotobuf -Lplugins/artnet/../../common/.libs -lolacommon -L../../plugins/artnet/messages/.libs -lolaartnetconf -lprotobuf
$ diff -u ./plugins/artnet/.libs/libolaartnet.so.slibtool.deps.tmp1 ./plugins/artnet/.libs/libolaartnet.so.slibtool.deps.tmp2 --- ./plugins/artnet/.libs/libolaartnet.so.slibtool.deps.tmp1 +++ ./plugins/artnet/.libs/libolaartnet.so.slibtool.deps.tmp2 @@ -16,6 +16,6 @@ -lprotobuf -Lplugins/artnet/../../common/.libs -lolacommon --L../../plugins/artnet/messages/.libs +-L./messages/.libs -lolaartnetconf -lprotobuf
Fixed.
7a5788c 62a0071
Metadata Update from @orbea: - Issue status updated to: Closed (was: Open)
The issue lied elsewhere and was in fact rather subtle, having to do with the scenario when the dependencies of a/b/libfoo.la were imported in the dependency list of x/libbar.la. The different directory depths of the .la build targets had to be accounted for, an this has been done in commit 62a0071.
a/b/libfoo.la
x/libbar.la
Login to comment on this ticket.