my compile command:
Code:
g++ -Wall -O -g img-validate.cpp -I/prog/lib/hdf5-1.8.1/hdf5/include/ -L /prog/lib/hdf5-1.8.1/hdf5/lib -lhdf5_cpp -lhdf5_hl -lhdf5 -lz -lstdc++ -lm -ltiff -o run
my errors:
Code:
/tmp/ccPVQaqt.o: In function `dataset_loader::compute_blob_metric_stats(dataset_buf const&, int, dataset_buf const&, dataset_buf const&, dataset_buf const&, dataset_buf const&, dataset_buf&, dataset_buf&, dataset_buf&)':
/prog/ana/src/h5/input.h:496: undefined reference to `dataset_loader::radon_thresh'
/prog/ana/src/h5/input.h:497: undefined reference to `dataset_loader::sigma'
/prog/ana/src/h5/input.h:501: undefined reference to `dataset_loader::radon_thresh'
/prog/ana/src/h5/input.h:502: undefined reference to `dataset_loader::sigma'
/tmp/ccPVQaqt.o: In function `dataset_loader::compute_sobel_edge_blob_metric_stats(dataset_buf const&, int, bool const*, dataset_buf const&, dataset_buf const&, dataset_buf const&, dataset_buf const&, dataset_buf&, dataset_buf&, dataset_buf&)':
/prog/ana/src/h5/input.h:457: undefined reference to `dataset_loader::sigma'
/prog/ana/src/h5/input.h:458: undefined reference to `dataset_loader::sigma'
/tmp/ccPVQaqt.o: In function `dataset_loader::derive_sobel_edge_blob_summary()':
/prog/ana/src/h5/input.h:393: undefined reference to `dataset_loader::sigma'
/prog/ana/src/h5/input.h:396: undefined reference to `dataset_loader::sigma'
/tmp/ccPVQaqt.o: In function `dataset_loader::derive_radon_blob_summary(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/prog/ana/src/h5/input.h:317: undefined reference to `dataset_loader::radon_thresh'
/prog/ana/src/h5/input.h:320: undefined reference to `dataset_loader::radon_thresh'
/prog/ana/src/h5/input.h:329: undefined reference to `dataset_loader::sigma'
/prog/ana/src/h5/input.h:332: undefined reference to `dataset_loader::sigma'
collect2: ld returned 1 exit status
make: *** [all] Error 1
I don't need to set LD_LIBARY_PATH do I? All lib paths and libs are provided in the compiling command so I don't think I should.
My img-validate code includes input.h which includes the HDF5 lib stuff.
radom_thresh and sigma are just arrays of numbers from inside my code:
from input.cpp:
Code:
const float dataset_loader::sigma[] = {0, 0.5, 1, 2, 4, 6, 8, 12, 16, 20, 24, 28}; // Extra element added to end.
const float dataset_loader::radon_thresh[] = {2, 2.828427e+00, 4, 5.656854e+00, 8, 1.131371e+01, 16, 2.262742e+01, 32, 4.525483e+01, 64, 9.050967e+01, 128, 1.810193e+02, 256, 3.620387e+02, 512, 7.240773e+02, 1024, 1.448155e+03, 2048, 2.896309e+03, 4096, 4096*M_SQRT2}; // ditto.
This code was functioning on my coworker's solaris. So I'm sure its a linking error. We also had the exact same problem before, before I had reformatted my linux partition, and fixed it by fixing the lib paths. Could someone confirm that my compile command is valid? Then I would know that the problem is a missing library and I can go ask him about it.