If I swap the order of the -L flags so that the target location is _before_ the LDFLAGS values, it works:
-R/usr/local/protobuf230/lib/amd64 -L/usr/local/protobuf230/lib/amd64 -L/usr/local/lib/amd64 Bob Friesenhahn wrote: > On Wed, 23 Dec 2009, Monty Taylor wrote: >> >> Thing is - libprotobuf.so hasn't been installed in /usr/local/lib/amd64 >> yet, so the -lprotobuf seems to trigger the unknown symbols above. >> >> If I remove -no-undefined from the LDFLAGS or I manually edit the above >> line to do: >> >> CC -G -zdefs -hlibprotoc.so.6 -o .libs/libprotoc.so.6.0.0 <various .o >> files snipped> -R/usr/local/lib/amd64 -L/usr/local/lib/amd64 >> .libs/libprotobuf.so -library=stlport4 -library=Crun -lpthread -lz -lc >> -template=no%extdef -mt -m64 -mt >> >> It works. Of course, I know the above editing is wrong, because it >> really wants to be linked with -lprotobuf. Am I just SOL in terms of >> being able to use -no-undefined in this case? It would be nice to get >> that error on the compile-for-tree stage but not have it apply to the >> relink for install phase. > > I believe that the problem is with the order that the libraries are > being installed. Unfortunately, Automake does not fully understand > library dependencies so it is necessary to list the libraries in the > correct dependency order for installation since programs and libraries > may be re-linked at install time. Consider that if an old version of > libprotobuf.so had already been installed, that this old version would > be accidentally used rather than the new version you are installing. If > you have two libraries which depend on each other's symbols, then the > libraries will need to be redesigned. > > Bob > -- > Bob Friesenhahn > bfrie...@simple.dallas.tx.us, http://www.simplesystems.org/users/bfriesen/ > GraphicsMagick Maintainer, http://www.GraphicsMagick.org/ > _______________________________________________ http://lists.gnu.org/mailman/listinfo/libtool