From: Paul O. <new...@ki...> - 2009-04-03 10:45:00
|
Hi Geoff, I was wondering if you can do something with a problem that I'm experiencing with link.txt files and SunCC C++ compiler. Looks like it is significant at link time what is the order of linker flags. I mean, it looks like linker flags should be always AFTER -o binary_name parameter. Strangely, this touches only C++ compiler, I never had to change link.txt files for C portions of Player distribution. At first I didn't know about the problem since (a matter of good luck?) link.txt for final player binary is done right: /usr/bin/CC -KPIC CMakeFiles/player.dir/server.o -o player libplayerdrivers/libplayerdrivers.so.2.2.0 ../libplayercore/libplayercore.so.2.2.0 ../libplayercore/libplayererror.so.2 .2.0 ../libplayercore/libplayerutils.so.2.2.0 ../libplayertcp/libplayertcp.so.2.2.0 ../libplayertcp/libplayerudp.so.2.2.0 ../libplayerxdr/libplayerxdr.so.2.2.0 -lpthread -lrt -lltdl -l dl -ljpeg -lsocket -lnsl -lz -lrt -lsocket -lnsl -lz -lrt -lcxcore -lcv -lhighgui -lcvaux -lml -lpng12 -ltiff -lgthread-2.0 -lcxcore -lcv -lhighgui -lcvaux -lml -lpng12 -ltiff -lgthre ad-2.0 -lcxcore -lcv -lhighgui -lcvaux -lml -lpng12 -ltiff -lgthread-2.0 -ljpeg -ljpeg -lcxcore -lcv -lhighgui -lcvaux -lml -lpng12 -ltiff -lgthread-2.0 -lcxcore -lcv -lhighgui -lc vaux -lml -lpng12 -ltiff -lgthread-2.0 -lgdk_pixbuf-2.0 -lm -lmlib -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lgdk_pixbuf-2.0 -lm -lmlib -lgobject-2.0 -lgmodule-2.0 - lglib-2.0 -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lmlib -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lgdk_pixbuf-2.0 -l m -lmlib -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lgdk_pixbuf-2.0 -lm -lmlib -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lz ../libplayerjpeg/libplayerjpeg.so.2. 2.0 -ljpeg ../libplayercore/libplayercore.so.2.2.0 -lpthread -lrt -lltdl -ldl ../libplayercore/libplayerutils.so.2.2.0 ../libplayercore/libplayererror.so.2.2.0 ../libplayerxdr/libplayerxdr.so.2.2.0 -R/export/home/guest/psg22/src/build/server/libplayerdrivers:/export/home/guest/psg22/src/build/libplayercore:/export/home/guest/psg22/src/build/libplayertcp:/export/home /guest/psg22/src/build/libplayerxdr:/export/home/guest/psg22/src/build/libplayerjpeg (I'm not sure if -KPIC is considered if it is before '-o player', despite it works as it is). Problem arised as more things were able to build with Suns compiler. See link.txt for pmaptest binary: /usr/bin/CC -KPIC -lgsl -lgslcblas -lm CMakeFiles/pmaptest.dir/pmap_test.o -o pmaptest libpmap.so.2.2.0 liblodo.so.2.2.0 -lGLU -lGL -lSM -lICE -lX11 -lXext -lsocket -lnsl -Bstat ic -lglut -Bdynamic -lXmu -lXi ../../libplayercore/libplayercore.so.2.2.0 ../../libplayercore/libplayerutils.so.2.2.0 ../../libplayercore/libplayererror.so.2.2.0 ../../libplayerxdr/lib playerxdr.so.2.2.0 -lpthread -lrt -lltdl -ldl -R/export/home/guest/psg22/lib this causes compile time error as if -lgsl was ignored: Linking CXX executable pmaptest Undefined first referenced symbol in file gsl_vector_get libpmap.so.2.2.0 gsl_vector_set libpmap.so.2.2.0 gsl_rng_taus libpmap.so.2.2.0 gsl_rng_free libpmap.so.2.2.0 gsl_set_error_handler_off liblodo.so.2.2.0 gsl_vector_alloc libpmap.so.2.2.0 gsl_ran_discrete_free libpmap.so.2.2.0 gsl_rng_alloc libpmap.so.2.2.0 gsl_vector_free libpmap.so.2.2.0 gsl_min_fminimizer_x_lower liblodo.so.2.2.0 gsl_min_fminimizer_x_upper liblodo.so.2.2.0 gsl_min_fminimizer_set liblodo.so.2.2.0 gsl_ran_discrete libpmap.so.2.2.0 gsl_min_fminimizer_f_minimum liblodo.so.2.2.0 gsl_min_fminimizer_x_minimum liblodo.so.2.2.0 gsl_multimin_fdfminimizer_iterate libpmap.so.2.2.0 gsl_vector_set_zero libpmap.so.2.2.0 gsl_multimin_fdfminimizer_x libpmap.so.2.2.0 gsl_multimin_fdfminimizer_vector_bfgs libpmap.so.2.2.0 gsl_min_fminimizer_brent liblodo.so.2.2.0 gsl_min_fminimizer_alloc liblodo.so.2.2.0 gsl_multimin_fdfminimizer_minimum libpmap.so.2.2.0 gsl_multimin_fdfminimizer_alloc libpmap.so.2.2.0 gsl_ran_gaussian libpmap.so.2.2.0 gsl_min_fminimizer_iterate liblodo.so.2.2.0 gsl_multimin_fdfminimizer_free libpmap.so.2.2.0 gsl_multimin_fdfminimizer_set libpmap.so.2.2.0 gsl_ran_discrete_preproc libpmap.so.2.2.0 ld: fatal: Symbol referencing errors. No output written to pmaptest *** Error code 1 Solution was little change in link.txt file: /usr/bin/CC CMakeFiles/pmaptest.dir/pmap_test.o -o pmaptest libpmap.so.2.2.0 liblodo.so.2.2.0 -KPIC -lgsl -lgslcblas -lm -lGLU -lGL -lSM -lICE -lX11 -lXext -lsocket -lnsl -Bstati c -lglut -Bdynamic -lXmu -lXi ../../libplayercore/libplayercore.so.2.2.0 ../../libplayercore/libplayerutils.so.2.2.0 ../../libplayercore/libplayererror.so.2.2.0 ../../libplayerxdr/libp layerxdr.so.2.2.0 -lpthread -lrt -lltdl -ldl -R/export/home/guest/psg22/lib Is it possible to cause cmake to generate link.txt always the same way as it is done for player binary? Paul |