Closed GoogleCodeExporter closed 9 years ago
Thanks for reporting this. I am not entirely sure what is happening here. This
seems to be a glog related issue.
I am adding Keir to this, who may have more of an insight.
Original comment by sameerag...@google.com
on 2 May 2013 at 5:31
Thanks Sameer. I just learnt VERBOSE=1 trick in Ceres email google group, so
here I pasted the failed command.
Linking CXX shared library ../../lib/libceres_shared.so
cd /net/fantasia/home/zhanxw/software/ceres-build/internal/ceres &&
/usr/bin/cmake -E cmake_link_script CMakeFiles/ceres_shared.dir/link.txt
--verbose=1
/usr/bin/c++ -fPIC -fopenmp -Werror -Wall -Wextra -Wno-unknown-pragmas
-Wno-sign-compare -Wno-unused-parameter -O3 -DNDEBUG -march=native
-mtune=native -march=native -mtune=native -march=native -mtune=native
-march=native -mtune=native -march=native -mtune=native -march=native
-mtune=native -march=native -mtune=native -lpthread -shared
-Wl,-soname,libceres_shared.so.1.5.0 -o ../../lib/libceres_shared.so.1.5.0
CMakeFiles/ceres_shared.dir/matrix.pb.cc.o
CMakeFiles/ceres_shared.dir/array_utils.cc.o
CMakeFiles/ceres_shared.dir/block_evaluate_preparer.cc.o
CMakeFiles/ceres_shared.dir/block_jacobi_preconditioner.cc.o
CMakeFiles/ceres_shared.dir/block_jacobian_writer.cc.o
CMakeFiles/ceres_shared.dir/block_random_access_dense_matrix.cc.o
CMakeFiles/ceres_shared.dir/block_random_access_matrix.cc.o
CMakeFiles/ceres_shared.dir/block_random_access_sparse_matrix.cc.o
CMakeFiles/ceres_shared.dir/block_sparse_matrix.cc.o
CMakeFiles/ceres_shared.dir/block_structure.cc.o
CMakeFiles/ceres_shared.dir/canonical_views_clustering.cc.o
CMakeFiles/ceres_shared.dir/cgnr_solver.cc.o
CMakeFiles/ceres_shared.dir/compressed_row_jacobian_writer.cc.o
CMakeFiles/ceres_shared.dir/compressed_row_sparse_matrix.cc.o
CMakeFiles/ceres_shared.dir/conditioned_cost_function.cc.o
CMakeFiles/ceres_shared.dir/conjugate_gradients_solver.cc.o
CMakeFiles/ceres_shared.dir/coordinate_descent_minimizer.cc.o
CMakeFiles/ceres_shared.dir/corrector.cc.o
CMakeFiles/ceres_shared.dir/cxsparse.cc.o
CMakeFiles/ceres_shared.dir/dense_normal_cholesky_solver.cc.o
CMakeFiles/ceres_shared.dir/dense_qr_solver.cc.o
CMakeFiles/ceres_shared.dir/dense_sparse_matrix.cc.o
CMakeFiles/ceres_shared.dir/detect_structure.cc.o
CMakeFiles/ceres_shared.dir/dogleg_strategy.cc.o
CMakeFiles/ceres_shared.dir/evaluator.cc.o
CMakeFiles/ceres_shared.dir/file.cc.o
CMakeFiles/ceres_shared.dir/gradient_checking_cost_function.cc.o
CMakeFiles/ceres_shared.dir/implicit_schur_complement.cc.o
CMakeFiles/ceres_shared.dir/iterative_schur_complement_solver.cc.o
CMakeFiles/ceres_shared.dir/levenberg_marquardt_strategy.cc.o
CMakeFiles/ceres_shared.dir/line_search.cc.o
CMakeFiles/ceres_shared.dir/line_search_direction.cc.o
CMakeFiles/ceres_shared.dir/line_search_minimizer.cc.o
CMakeFiles/ceres_shared.dir/linear_least_squares_problems.cc.o
CMakeFiles/ceres_shared.dir/linear_operator.cc.o
CMakeFiles/ceres_shared.dir/linear_solver.cc.o
CMakeFiles/ceres_shared.dir/local_parameterization.cc.o
CMakeFiles/ceres_shared.dir/loss_function.cc.o
CMakeFiles/ceres_shared.dir/low_rank_inverse_hessian.cc.o
CMakeFiles/ceres_shared.dir/minimizer.cc.o
CMakeFiles/ceres_shared.dir/normal_prior.cc.o
CMakeFiles/ceres_shared.dir/parameter_block_ordering.cc.o
CMakeFiles/ceres_shared.dir/partitioned_matrix_view.cc.o
CMakeFiles/ceres_shared.dir/polynomial.cc.o
CMakeFiles/ceres_shared.dir/preconditioner.cc.o
CMakeFiles/ceres_shared.dir/problem.cc.o
CMakeFiles/ceres_shared.dir/problem_impl.cc.o
CMakeFiles/ceres_shared.dir/program.cc.o
CMakeFiles/ceres_shared.dir/residual_block.cc.o
CMakeFiles/ceres_shared.dir/residual_block_utils.cc.o
CMakeFiles/ceres_shared.dir/runtime_numeric_diff_cost_function.cc.o
CMakeFiles/ceres_shared.dir/schur_complement_solver.cc.o
CMakeFiles/ceres_shared.dir/schur_eliminator.cc.o
CMakeFiles/ceres_shared.dir/schur_jacobi_preconditioner.cc.o
CMakeFiles/ceres_shared.dir/scratch_evaluate_preparer.cc.o
CMakeFiles/ceres_shared.dir/solver.cc.o
CMakeFiles/ceres_shared.dir/solver_impl.cc.o
CMakeFiles/ceres_shared.dir/sparse_matrix.cc.o
CMakeFiles/ceres_shared.dir/sparse_normal_cholesky_solver.cc.o
CMakeFiles/ceres_shared.dir/split.cc.o
CMakeFiles/ceres_shared.dir/stringprintf.cc.o
CMakeFiles/ceres_shared.dir/suitesparse.cc.o
CMakeFiles/ceres_shared.dir/triplet_sparse_matrix.cc.o
CMakeFiles/ceres_shared.dir/trust_region_minimizer.cc.o
CMakeFiles/ceres_shared.dir/trust_region_strategy.cc.o
CMakeFiles/ceres_shared.dir/types.cc.o
CMakeFiles/ceres_shared.dir/visibility.cc.o
CMakeFiles/ceres_shared.dir/visibility_based_preconditioner.cc.o
CMakeFiles/ceres_shared.dir/wall_time.cc.o
CMakeFiles/ceres_shared.dir/generated/schur_eliminator_2_2_2.cc.o
CMakeFiles/ceres_shared.dir/generated/schur_eliminator_2_2_3.cc.o
CMakeFiles/ceres_shared.dir/generated/schur_eliminator_2_2_4.cc.o
CMakeFiles/ceres_shared.dir/generated/schur_eliminator_2_2_d.cc.o
CMakeFiles/ceres_shared.dir/generated/schur_eliminator_2_3_3.cc.o
CMakeFiles/ceres_shared.dir/generated/schur_eliminator_2_3_4.cc.o
CMakeFiles/ceres_shared.dir/generated/schur_eliminator_2_3_9.cc.o
CMakeFiles/ceres_shared.dir/generated/schur_eliminator_2_3_d.cc.o
CMakeFiles/ceres_shared.dir/generated/schur_eliminator_2_4_3.cc.o
CMakeFiles/ceres_shared.dir/generated/schur_eliminator_2_4_4.cc.o
CMakeFiles/ceres_shared.dir/generated/schur_eliminator_2_4_d.cc.o
CMakeFiles/ceres_shared.dir/generated/schur_eliminator_4_4_2.cc.o
CMakeFiles/ceres_shared.dir/generated/schur_eliminator_4_4_3.cc.o
CMakeFiles/ceres_shared.dir/generated/schur_eliminator_4_4_4.cc.o
CMakeFiles/ceres_shared.dir/generated/schur_eliminator_4_4_d.cc.o
CMakeFiles/ceres_shared.dir/generated/schur_eliminator_d_d_d.cc.o
/net/fantasia/home/zhanxw/software/glog/lib/libglog.a
/net/fantasia/home/zhanxw/software/gflags/lib/libgflags.a -lgomp
/net/fantasia/home/zhanxw/software/protobuf/lib/libprotobuf.a
/usr/bin/ld:
/net/fantasia/home/zhanxw/software/glog/lib/libglog.a(libglog_la-logging.o):
relocation R_X86_64_32S against `vtable for google::base::Logger' can not be
used when making a shared object; recompile with -fPIC
/net/fantasia/home/zhanxw/software/glog/lib/libglog.a: could not read symbols:
Bad value
collect2: ld returned 1 exit status
make[2]: *** [lib/libceres_shared.so.1.5.0] Error 1
make[2]: Leaving directory `/net/fantasia/home/zhanxw/software/ceres-build'
make[1]: *** [internal/ceres/CMakeFiles/ceres_shared.dir/all] Error 2
make[1]: Leaving directory `/net/fantasia/home/zhanxw/software/ceres-build'
make: *** [all] Error 2
Original comment by zhanxw
on 2 May 2013 at 5:36
I think your libglog maybe broken. Could you try compiling something like
#include "glog/logging.h"
int main(int argc, char** argv) {
google::InitGoogleLogging(argv[0]);
LOG(INFO) << "Hello World\n";
}
and see if
a.out -logtostderr works?
Original comment by sameerag...@google.com
on 2 May 2013 at 5:39
It seems libglog works...
I created a file like this:
#include "glog/logging.h"
int main(int argc, char** argv) {
google::InitGoogleLogging(argv[0]);
LOG(INFO) << "Hello World\n";
LOG(ERROR) << "Hello World\n";
}
Then I compile and run it:
g++ tmp.cpp -I$HOME/software/glog/include $HOME/software/glog/lib/libglog.a
-lpthread
./a.out --help
E0502 13:56:15.626204 12976 tmp.cpp:6] Hello World
Original comment by zhanxw
on 2 May 2013 at 5:58
actually the problem is that libglog was not compiled with -fPIC which means
the code in it is not position independent and the linker is barfing. I think
you need to re-compile your libglog to be shared library friendly.
you could just not build the shared library .. and only work with the static
library if you want.
"make ceres"
should do that
Original comment by sameerag...@google.com
on 2 May 2013 at 6:08
I just checked glog is compile with -fPIC flag, as following:
libtool: link: g++ -fPIC -DPIC -shared -nostdlib
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crti.o
/usr/lib/gcc/x86_64-linux-gnu/4.6/crtbeginS.o .libs/libglog_la-logging.o
.libs/libglog_la-raw_logging.o .libs/libglog_la-vlog_is_on.o
.libs/libglog_la-utilities.o .libs/libglog_la-demangle.o
.libs/libglog_la-symbolize.o .libs/libglog_la-signalhandler.o -lpthread
-L/usr/lib/gcc/x86_64-linux-gnu/4.6
-L/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu
-L/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib -L/lib/x86_64-linux-gnu
-L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib
-L/usr/lib/gcc/x86_64-linux-gnu/4.6/../../.. -lstdc++ -lm -lc -lgcc_s
/usr/lib/gcc/x86_64-linux-gnu/4.6/crtendS.o
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crtn.o -O2
-Wl,-soname -Wl,libglog.so.0 -o .libs/libglog.so.0.0.0
But I don't bother to deal with glog issue now, as the "make ceres" trick
works, and I am able to use Ceres now.
Thanks for your help.
Original comment by zhanxw
on 2 May 2013 at 8:42
Np. I will mark this issue as fixed for now.
Original comment by sameerag...@google.com
on 2 May 2013 at 8:47
Original issue reported on code.google.com by
zhanxw
on 2 May 2013 at 5:12