Hello,

I've installed mlpack-3.1.1 and mlpack-devel in /usr/include/mlpack (headers) 
and /usr/lib64/libmlpack.so  using yum on Fedora 7.6.

I've tried to compile the following example code  ( compiling with g++ (GCC) 
9.2.0)
_______________
#include <mlpack/core.hpp>
#include <mlpack/methods/neighbor_search/neighbor_search.hpp>
#include <mlpack/core/data/load.hpp>

using namespace mlpack;
using namespace mlpack::neighbor; // NeighborSearch and NearestNeighborSort
using namespace mlpack::metric; // ManhattanDistance

int main()
{
    arma::mat data;
    data::Load("data.csv", data, true);
    NeighborSearch<NearestNeighborSort, ManhattanDistance> nn(data);
    arma::Mat<size_t> neighbors;
    arma::mat distances;
    nn.Search(1, neighbors, distances);

    for (size_t i = 0; i < neighbors.n_elem; ++i)
    {
        std::cout << "Nearest neighbor of point " << i << " is point "
        << neighbors[i] << " and the distance is " << distances[i] << ".\n";
    }
}
__________

When I tried to compile this code with:
g++ knn_example.cpp -o knn_example -std=c++11 -larmadillo -lmlpack 
-lboost_serialization -fopenmp

or with

g++ knn_example.cpp -o knn_example -std=c++11 -larmadillo -lmlpack 
-lboost_serialization -fopenmp -I/usr/include/ -L/usr/lib64

, the error I get is as follows:

/tmp/cckP4kAv.o: In function `main':
knn_example.cpp:(.text+0x317): undefined reference to `bool 
mlpack::data::Load<double>(std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const&, arma::Mat<double>&, 
bool, bool)'
/tmp/cckP4kAv.o: In function 
`mlpack::neighbor::NeighborSearch<mlpack::neighbor::NearestNS, 
mlpack::metric::LMetric<1, false>, arma::Mat<double>, mlpack::tree::KDTree, 
mlpack::tree::BinarySpaceTree<mlpack::metric::LMetric<1, false>, 
mlpack::neighbor::NeighborSearchStat<mlpack::neighbor::NearestNS>, 
arma::Mat<double>, mlpack::bound::HRectBound, 
mlpack::tree::MidpointSplit>::DualTreeTraverser, 
mlpack::tree::BinarySpaceTree<mlpack::metric::LMetric<1, false>, 
mlpack::neighbor::NeighborSearchStat<mlpack::neighbor::NearestNS>, 
arma::Mat<double>, mlpack::bound::HRectBound, 
mlpack::tree::MidpointSplit>::SingleTreeTraverser>::Search(unsigned long, 
arma::Mat<unsigned long>&, arma::Mat<double>&)':
knn_example.cpp:(.text._ZN6mlpack8neighbor14NeighborSearchINS0_9NearestNSENS_6metric7LMetricILi1ELb0EEEN4arma3MatIdEENS_4tree6KDTreeENS9_15BinarySpaceTreeIS5_NS0_18NeighborSearchStatIS2_EES8_NS_5bound10HRectBoundENS9_13MidpointSplitEE17DualTreeTraverserENSH_19SingleTreeTraverserEE6SearchEmRNS7_ImEERS8_[_ZN6mlpack8neighbor14NeighborSearchINS0_9NearestNSENS_6metric7LMetricILi1ELb0EEEN4arma3MatIdEENS_4tree6KDTreeENS9_15BinarySpaceTreeIS5_NS0_18NeighborSearchStatIS2_EES8_NS_5bound10HRectBoundENS9_13MidpointSplitEE17DualTreeTraverserENSH_19SingleTreeTraverserEE6SearchEmRNS7_ImEERS8_]+0x256):
 undefined reference to `mlpack::Timer::Start(std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const&)'
knn_example.cpp:(.text._ZN6mlpack8neighbor14NeighborSearchINS0_9NearestNSENS_6metric7LMetricILi1ELb0EEEN4arma3MatIdEENS_4tree6KDTreeENS9_15BinarySpaceTreeIS5_NS0_18NeighborSearchStatIS2_EES8_NS_5bound10HRectBoundENS9_13MidpointSplitEE17DualTreeTraverserENSH_19SingleTreeTraverserEE6SearchEmRNS7_ImEERS8_[_ZN6mlpack8neighbor14NeighborSearchINS0_9NearestNSENS_6metric7LMetricILi1ELb0EEEN4arma3MatIdEENS_4tree6KDTreeENS9_15BinarySpaceTreeIS5_NS0_18NeighborSearchStatIS2_EES8_NS_5bound10HRectBoundENS9_13MidpointSplitEE17DualTreeTraverserENSH_19SingleTreeTraverserEE6SearchEmRNS7_ImEERS8_]+0xb15):
 undefined reference to `mlpack::Timer::Stop(std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const&)'
/tmp/cckP4kAv.o: In function 
`mlpack::bound::HRectBound<mlpack::metric::LMetric<1, false>, double>& 
mlpack::bound::HRectBound<mlpack::metric::LMetric<1, false>, 
double>::operator|=<arma::subview<double> >(arma::subview<double> const&)':
knn_example.cpp:(.text._ZN6mlpack5bound10HRectBoundINS_6metric7LMetricILi1ELb0EEEdEoRIN4arma7subviewIdEEEERS5_RKT_[_ZN6mlpack5bound10HRectBoundINS_6metric7LMetricILi1ELb0EEEdEoRIN4arma7subviewIdEEEERS5_RKT_]+0x6f):
 undefined reference to `mlpack::Log::Assert(bool, 
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > 
const&)'
/tmp/cckP4kAv.o: In function `unsigned long 
mlpack::tree::split::PerformSplit<arma::Mat<double>, 
mlpack::tree::MidpointSplit<mlpack::bound::HRectBound<mlpack::metric::LMetric<1,
 false>, double>, arma::Mat<double> > >(arma::Mat<double>&, unsigned long, 
unsigned long, 
mlpack::tree::MidpointSplit<mlpack::bound::HRectBound<mlpack::metric::LMetric<1,
 false>, double>, arma::Mat<double> >::SplitInfo const&, std::vector<unsigned 
long, std::allocator<unsigned long> >&)':
knn_example.cpp:(.text._ZN6mlpack4tree5split12PerformSplitIN4arma3MatIdEENS0_13MidpointSplitINS_5bound10HRectBoundINS_6metric7LMetricILi1ELb0EEEdEES5_EEEEmRT_mmRKNT0_9SplitInfoERSt6vectorImSaImEE[_ZN6mlpack4tree5split12PerformSplitIN4arma3MatIdEENS0_13MidpointSplitINS_5bound10HRectBoundINS_6metric7LMetricILi1ELb0EEEdEES5_EEEEmRT_mmRKNT0_9SplitInfoERSt6vectorImSaImEE]+0x40a):
 undefined reference to `mlpack::Log::Assert(bool, 
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > 
const&)'
/tmp/cckP4kAv.o: In function `double 
mlpack::bound::HRectBound<mlpack::metric::LMetric<1, false>, 
double>::MinDistance<arma::subview_col<double> >(arma::subview_col<double> 
const&, std::enable_if<IsVector<arma::subview_col<double> >::value, 
void>::type*) const':
knn_example.cpp:(.text._ZNK6mlpack5bound10HRectBoundINS_6metric7LMetricILi1ELb0EEEdE11MinDistanceIN4arma11subview_colIdEEEEdRKT_PNSt9enable_ifIXsr8IsVectorISA_E5valueEvE4typeE[_ZNK6mlpack5bound10HRectBoundINS_6metric7LMetricILi1ELb0EEEdE11MinDistanceIN4arma11subview_colIdEEEEdRKT_PNSt9enable_ifIXsr8IsVectorISA_E5valueEvE4typeE]+0x6a):
 undefined reference to `mlpack::Log::Assert(bool, 
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > 
const&)'
/tmp/cckP4kAv.o: In function 
`mlpack::bound::HRectBound<mlpack::metric::LMetric<1, false>, 
double>::MinDistance(mlpack::bound::HRectBound<mlpack::metric::LMetric<1, 
false>, double> const&) const':
knn_example.cpp:(.text._ZNK6mlpack5bound10HRectBoundINS_6metric7LMetricILi1ELb0EEEdE11MinDistanceERKS5_[_ZNK6mlpack5bound10HRectBoundINS_6metric7LMetricILi1ELb0EEEdE11MinDistanceERKS5_]+0x56):
 undefined reference to `mlpack::Log::Assert(bool, 
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > 
const&)'
collect2: error: ld returned 1 exit status

_________________________

I'm hoping someone may be able to help with this compilation issue.

I've also tried compiling mlpack itself from source using boost_1_71_0, but 
even after giving cmake the BOOST_ROOT, boost is not linking appropriately when 
'make' is run. Although this is a separate issue, if anyone has suggestions 
about either of these approaches to using mlpack, I'd be very grateful.

Regards,
David



David Hearn
Associate Professor
Director BALT Herbarium
Towson University
Department of Biological Sciences
8000 York Road
Baltimore, MD 21252
USA

phone: 410-704-2997
fax: 410-704-2405

email: [email protected]
_______________________________________________
mlpack mailing list
[email protected]
http://knife.lugatgt.org/cgi-bin/mailman/listinfo/mlpack

Reply via email to