I did a little more trial-and-error investigation into this last night, since I was suspecting a linker bug might be at hand here (as it makes no sense that static libraries linked into a shared library which is linked to a binary which dlopens other libraries should cause multiple copies of the static data in the shared library to appear in the libraries).
Good to know :)
I did a little more trial-and-error investigation into this last night, since I was suspecting a linker bug might be at hand here (as it makes no sense that static libraries linked into a shared library which is linked to a binary which dlopens other libraries should cause multiple copies of the static data in the shared library to appear in the libraries).
/usr/bin/c++ -fPIC -fPIC -Wall -Wno-deprecated -declarations -Werror -fPIC -Wall -Wno-deprecated -declarations -Werror -fPIC -Wall -Wno-deprecated -declarations -Werror -fPIC -Wall -Wno-deprecated -declarations -Werror -fPIC -Wall -Wno-deprecated -declarations -Werror -O2 -g -DQT_NO_DEBUG -Wl,-Bsymbolic- functions -shared -Wl,-soname, libdecor. so -o libdecor.so CMakeFiles/ decor.dir/ src/decor. cpp.o CMakeFiles/ decor.dir/ __/__/generated /decor_ options. cpp.o -L/home/ smspillaz/ Applications/ Compiz/ lib/compiz -L/home/ smspillaz/ Applications/ Compiz/ lib -lXdamage -lXfixes -lXcomposite -lX11-xcb -lX11 -lxcb -lXrandr -lXinerama -lXext -lICE -lSM -lxslt -lxml2 -lgio-2.0 -lglibmm-2.4 -lgobject-2.0 -lsigc-2.0 -lglib-2.0 -lstartup- notification- 1 -lboost_ serialization- mt -lboost_ serialization- mt -lboost_ serialization- mt ../composite/ libcomposite. so ../opengl/ libopengl. so ../../libdecora tion/libdecorat ion.so. 0.0.0 ../composite/ libcomposite. so -lXdamage -lXfixes -lXcomposite -lX11-xcb -lxcb -lXrandr -lXinerama -lXext -lICE -lSM -lxslt -lxml2 -lgio-2.0 -lglibmm-2.4 -lgobject-2.0 -lsigc-2.0 -lglib-2.0 -lstartup- notification- 1 -lboost_ serialization- mt -lGL -lXrender -lX11 -lm -Wl,-rpath, ::::::: ::::::: ::::::: ::::::: ::::::: ::::::: :::: d1dddb1a- 729f-40ef- 9725-dc2a9ad560 31/smspillaz/ Source/ Compiz/ dev/dev/ merges/ compiz/ core/compiz- core/build'
make[2]: Leaving directory `/media/
Would seem to indicate that those dependencies aren't being pulled in.
Incidentally, if I create another shared library built from some other static libraries, this bug doesn't happen anymore. No idea why.