pmoulon / CMVS-PMVS

This software (CMVS) takes the output of a structure-from-motion (SfM) software as input, then decomposes the input images into a set of image clusters of managable size. An MVS software can be used to process each cluster independently and in parallel, where the union of reconstructions from all the clusters should not miss any details that can be otherwise obtained from the whole image set. CMVS should be used in conjunction with an SfM software Bundler and an MVS software PMVS2 (PMVS version 2).
http://opensourcephotogrammetry.blogspot.com/
939 stars 464 forks source link

[question] make error [Apple+CLANG]: #8

Closed julian-wang closed 9 years ago

julian-wang commented 9 years ago

When I make, some errors occurred as follows:

ld: library not found for -lcmvs_lib
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [cmvs] Error 1
make[1]: *** [CMakeFiles/cmvs.dir/all] Error 2
make: *** [all] Error 2

mac clang version

$ clang -v Apple LLVM version 6.0 (clang-600.0.56) (based on LLVM 3.5svn) Target: x86_64-apple-darwin14.0.0 Thread model: posix

pmoulon commented 9 years ago

I never tried to compite it with clang. Have you used the Cmake rules described here https://github.com/pmoulon/CMVS-PMVS/blob/master/Readme.txt

julian-wang commented 9 years ago

I'm not familiar with cmake. Cmake works when I added some config to Cmakelist as follows:

SET(GSLCBLAS_LIB ./program/thirdParty/gsl-1.13)
SET(GSL_LIB ./program/thirdParty/gsl-1.13) 

However, when I tried to use makefile, I met a problem of the cross platform.

Linking CXX executable pmvs2
Undefined symbols for architecture x86_64:
  "_gsl_deriv_central", referenced from:
      PMVS3::Coptim::my_df(gsl_vector const*, void*, gsl_vector*) in libpmvs_lib.a(optim.cc.o)
      PMVS3::Coptim::my_df_ssd(gsl_vector const*, void*, gsl_vector*) in libpmvs_lib.a(optim.cc.o)
      PMVS3::Coptim::my_df_depth(gsl_vector const*, void*, gsl_vector*) in libpmvs_lib.a(optim.cc.o)
  "_gsl_multimin_fminimizer_alloc", referenced from:
      PMVS3::Coptim::refinePatchBFGS(Patch::Cpatch&, int, int, int) in libpmvs_lib.a(optim.cc.o)
  "_gsl_multimin_fminimizer_free", referenced from:
      PMVS3::Coptim::refinePatchBFGS(Patch::Cpatch&, int, int, int) in libpmvs_lib.a(optim.cc.o)
  "_gsl_multimin_fminimizer_iterate", referenced from:
      PMVS3::Coptim::refinePatchBFGS(Patch::Cpatch&, int, int, int) in libpmvs_lib.a(optim.cc.o)
  "_gsl_multimin_fminimizer_nmsimplex", referenced from:
      PMVS3::Coptim::refinePatchBFGS(Patch::Cpatch&, int, int, int) in libpmvs_lib.a(optim.cc.o)
  "_gsl_multimin_fminimizer_set", referenced from:
      PMVS3::Coptim::refinePatchBFGS(Patch::Cpatch&, int, int, int) in libpmvs_lib.a(optim.cc.o)
  "_gsl_multimin_fminimizer_size", referenced from:
      PMVS3::Coptim::refinePatchBFGS(Patch::Cpatch&, int, int, int) in libpmvs_lib.a(optim.cc.o)
  "_gsl_multimin_test_size", referenced from:
      PMVS3::Coptim::refinePatchBFGS(Patch::Cpatch&, int, int, int) in libpmvs_lib.a(optim.cc.o)
  "_gsl_vector_alloc", referenced from:
      PMVS3::Coptim::refinePatchBFGS(Patch::Cpatch&, int, int, int) in libpmvs_lib.a(optim.cc.o)
      PMVS3::Coptim::my_df(gsl_vector const*, void*, gsl_vector*) in libpmvs_lib.a(optim.cc.o)
      PMVS3::Coptim::my_f0(double, void*) in libpmvs_lib.a(optim.cc.o)
      PMVS3::Coptim::my_f1(double, void*) in libpmvs_lib.a(optim.cc.o)
      PMVS3::Coptim::my_f2(double, void*) in libpmvs_lib.a(optim.cc.o)
      PMVS3::Coptim::my_f_ssd0(double, void*) in libpmvs_lib.a(optim.cc.o)
      PMVS3::Coptim::my_f_ssd1(double, void*) in libpmvs_lib.a(optim.cc.o)
      ...
  "_gsl_vector_free", referenced from:
      PMVS3::Coptim::refinePatchBFGS(Patch::Cpatch&, int, int, int) in libpmvs_lib.a(optim.cc.o)
      PMVS3::Coptim::my_df(gsl_vector const*, void*, gsl_vector*) in libpmvs_lib.a(optim.cc.o)
      PMVS3::Coptim::my_f0(double, void*) in libpmvs_lib.a(optim.cc.o)
      PMVS3::Coptim::my_f1(double, void*) in libpmvs_lib.a(optim.cc.o)
      PMVS3::Coptim::my_f2(double, void*) in libpmvs_lib.a(optim.cc.o)
      PMVS3::Coptim::my_f_ssd0(double, void*) in libpmvs_lib.a(optim.cc.o)
      PMVS3::Coptim::my_f_ssd1(double, void*) in libpmvs_lib.a(optim.cc.o)
      ...
  "_gsl_vector_get", referenced from:
      PMVS3::Coptim::refinePatchBFGS(Patch::Cpatch&, int, int, int) in libpmvs_lib.a(optim.cc.o)
      PMVS3::Coptim::my_f(gsl_vector const*, void*) in libpmvs_lib.a(optim.cc.o)
      PMVS3::Coptim::my_df(gsl_vector const*, void*, gsl_vector*) in libpmvs_lib.a(optim.cc.o)
      PMVS3::Coptim::my_f_ssd(gsl_vector const*, void*) in libpmvs_lib.a(optim.cc.o)
      PMVS3::Coptim::my_df_ssd(gsl_vector const*, void*, gsl_vector*) in libpmvs_lib.a(optim.cc.o)
      PMVS3::Coptim::my_f_depth(gsl_vector const*, void*) in libpmvs_lib.a(optim.cc.o)
      PMVS3::Coptim::my_df_depth(gsl_vector const*, void*, gsl_vector*) in libpmvs_lib.a(optim.cc.o)
      ...
  "_gsl_vector_set", referenced from:
      PMVS3::Coptim::refinePatchBFGS(Patch::Cpatch&, int, int, int) in libpmvs_lib.a(optim.cc.o)
      PMVS3::Coptim::my_df(gsl_vector const*, void*, gsl_vector*) in libpmvs_lib.a(optim.cc.o)
      PMVS3::Coptim::my_f0(double, void*) in libpmvs_lib.a(optim.cc.o)
      PMVS3::Coptim::my_f1(double, void*) in libpmvs_lib.a(optim.cc.o)
      PMVS3::Coptim::my_f2(double, void*) in libpmvs_lib.a(optim.cc.o)
      PMVS3::Coptim::my_df_ssd(gsl_vector const*, void*, gsl_vector*) in libpmvs_lib.a(optim.cc.o)
      PMVS3::Coptim::my_f_ssd0(double, void*) in libpmvs_lib.a(optim.cc.o)
      ...
  "_gsl_vector_set_all", referenced from:
      PMVS3::Coptim::refinePatchBFGS(Patch::Cpatch&, int, int, int) in libpmvs_lib.a(optim.cc.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [main/pmvs2] Error 1
make[1]: *** [main/CMakeFiles/pmvs2.dir/all] Error 2
make: *** [all] Error 2
pmoulon commented 9 years ago

The dafault makefile are depracated, please prefer using the CMakeLists.

pmoulon commented 9 years ago

On unix platform you must link to your existing GSL library. See here: https://github.com/pmoulon/CMVS-PMVS/blob/master/program/CMakeLists.txt#L52

So please remove your following lines and look why the GSL module is not found on your computer.

SET(GSLCBLAS_LIB ./program/thirdParty/gsl-1.13) SET(GSL_LIB ./program/thirdParty/gsl-1.13)

julian-wang commented 9 years ago

Thanks a lot It works when I reinstalled GSL library without any configuration.

pmoulon commented 9 years ago

Have fun ;-) Don't hesitate to share your nice reconstruction on G+ ;-)

julian-wang commented 9 years ago

Thanks for your help.

pmoulon commented 9 years ago

@julian-wang : the repo have been updated, gsl is not longer necessary.