[mlpack-svn] [MLPACK] #250: CMake links against wrong library on OS X

MLPACK Trac trac at coffeetalk-1.cc.gatech.edu
Mon Sep 17 16:38:27 EDT 2012


#250: CMake links against wrong library on OS X
--------------------------+-------------------------------------------------
 Reporter:  rcurtin       |        Owner:  rcurtin            
     Type:  defect        |       Status:  new                
 Priority:  minor         |    Milestone:  mlpack 1.0.4       
Component:  build system  |     Keywords:  os x, linker, cmake
 Blocking:                |   Blocked By:                     
--------------------------+-------------------------------------------------
 It seems as if a libmlpack.X.Y.dylib exists in the linker path on OS X
 (see #230's attachment:
 http://trac.research.cc.gatech.edu/fastlab/attachment/ticket/230/emst_crash.out
 ), executables are improperly linked against that library instead of the
 desired library (build/lib/libmlpack.X.Y.dylib).

 This problem does not exist on Linux systems (tested on
 samedi.cc.gt.atl.ga.us, a Fedora 17 box):

 {{{
 $ VERBOSE=1 make mlpack_test
 ...
 Linking CXX executable ../../../bin/mlpack_test
 cd /home/ryan/work/fastlab/trunk/build/src/mlpack/tests && /usr/bin/cmake
 -E cmake_link_script CMakeFiles/mlpack_test.dir/link.txt --verbose=1
 /usr/lib/ccache/c++    -Wall -Wextra -g -O0 -pg    -pg
 CMakeFiles/mlpack_test.dir/mlpack_test.cpp.o
 CMakeFiles/mlpack_test.dir/allkfn_test.cpp.o
 CMakeFiles/mlpack_test.dir/allknn_test.cpp.o
 CMakeFiles/mlpack_test.dir/arma_extend_test.cpp.o
 CMakeFiles/mlpack_test.dir/aug_lagrangian_test.cpp.o
 CMakeFiles/mlpack_test.dir/cli_test.cpp.o
 CMakeFiles/mlpack_test.dir/distribution_test.cpp.o
 CMakeFiles/mlpack_test.dir/emst_test.cpp.o
 CMakeFiles/mlpack_test.dir/gmm_test.cpp.o
 CMakeFiles/mlpack_test.dir/hmm_test.cpp.o
 CMakeFiles/mlpack_test.dir/kernel_test.cpp.o
 CMakeFiles/mlpack_test.dir/kernel_pca_test.cpp.o
 CMakeFiles/mlpack_test.dir/kmeans_test.cpp.o
 CMakeFiles/mlpack_test.dir/lars_test.cpp.o
 CMakeFiles/mlpack_test.dir/lin_alg_test.cpp.o
 CMakeFiles/mlpack_test.dir/linear_regression_test.cpp.o
 CMakeFiles/mlpack_test.dir/load_save_test.cpp.o
 CMakeFiles/mlpack_test.dir/local_coordinate_coding_test.cpp.o
 CMakeFiles/mlpack_test.dir/lrsdp_test.cpp.o
 CMakeFiles/mlpack_test.dir/math_test.cpp.o
 CMakeFiles/mlpack_test.dir/max_ip_test.cpp.o
 CMakeFiles/mlpack_test.dir/nbc_test.cpp.o
 CMakeFiles/mlpack_test.dir/nca_test.cpp.o
 CMakeFiles/mlpack_test.dir/nmf_test.cpp.o
 CMakeFiles/mlpack_test.dir/pca_test.cpp.o
 CMakeFiles/mlpack_test.dir/radical_test.cpp.o
 CMakeFiles/mlpack_test.dir/range_search_test.cpp.o
 CMakeFiles/mlpack_test.dir/save_restore_utility_test.cpp.o
 CMakeFiles/mlpack_test.dir/sort_policy_test.cpp.o
 CMakeFiles/mlpack_test.dir/sparse_coding_test.cpp.o
 CMakeFiles/mlpack_test.dir/tree_test.cpp.o
 CMakeFiles/mlpack_test.dir/union_find_test.cpp.o
 CMakeFiles/mlpack_test.dir/det_test.cpp.o  -o ../../../bin/mlpack_test
 -rdynamic ../../../lib/libmlpack.so.1.0 -larmadillo
 -lboost_program_options-mt -lboost_unit_test_framework-mt -lboost_random-
 mt -lboost_program_options-mt -lboost_unit_test_framework-mt
 -lboost_random-mt -lxml2
 -Wl,-rpath,/home/ryan/work/fastlab/trunk/build/lib
 ...
 }}}

 then

 {{{
 $ ldd bin/mlpack_test
         linux-gate.so.1 =>  (0xb772d000)
         libmlpack.so.1 =>
 /home/ryan/work/fastlab/trunk/build/lib/libmlpack.so.1 (0xb75d7000)
         libarmadillo.so.3 => /lib/libarmadillo.so.3 (0x49f6e000)
         libboost_program_options-mt.so.1.48.0 => /lib
 /libboost_program_options-mt.so.1.48.0 (0xb756c000)
         libboost_unit_test_framework-mt.so.1.48.0 => /lib
 /libboost_unit_test_framework-mt.so.1.48.0 (0xb74bb000)
         libboost_random-mt.so.1.48.0 => /lib/libboost_random-mt.so.1.48.0
 (0xb74b6000)
         libxml2.so.2 => /lib/libxml2.so.2 (0x440ff000)
         libstdc++.so.6 => /lib/libstdc++.so.6 (0x44b41000)
         libm.so.6 => /lib/libm.so.6 (0x43a83000)
         libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x43df1000)
         libc.so.6 => /lib/libc.so.6 (0x438a5000)
         libpthread.so.0 => /lib/libpthread.so.0 (0x43a55000)
         libblas.so.3 => /lib/libblas.so.3 (0x49d7e000)
         liblapack.so.3 => /usr/lib/atlas/liblapack.so.3 (0x4a023000)
         libcblas.so.3 => /usr/lib/atlas/libcblas.so.3 (0x43d58000)
         libclapack.so.3 => /usr/lib/atlas/libclapack.so.3 (0x49f53000)
         librt.so.1 => /lib/librt.so.1 (0x43a78000)
         libdl.so.2 => /lib/libdl.so.2 (0x43a71000)
         libz.so.1 => /lib/libz.so.1 (0x43ab0000)
         /lib/ld-linux.so.2 (0x43882000)
         libgfortran.so.3 => /lib/libgfortran.so.3 (0x49ddd000)
         libf77blas.so.3 => /usr/lib/atlas/libf77blas.so.3 (0x49ed9000)
         libatlas.so.3 => /usr/lib/atlas/libatlas.so.3 (0x446b4000)
         libquadmath.so.0 => /lib/libquadmath.so.0 (0x44577000)
 }}}

 Bill, can you run those two commands and paste the output on your setup,
 when libmlpack.X.Y.dylib is placed (incorrectly) in
 /Users/march/local/lib/?

 {{{
 $ VERBOSE=1 make mlpack_test
 $ ldd bin/mlpack_test
 }}}

 Then maybe it will become clearer what the issue is.  Or, if you don't
 have time, when I finally get that OS X VM running I will look into it...

-- 
Ticket URL: <http://trac.research.cc.gatech.edu/fastlab/ticket/250>
MLPACK <www.fast-lab.org>
MLPACK is an intuitive, fast, and scalable C++ machine learning library developed by the FASTLAB at Georgia Tech under Dr. Alex Gray.


More information about the mlpack-svn mailing list