[
https://issues.apache.org/jira/browse/SINGA-272?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15686865#comment-15686865
]
Xie Zhongle commented on SINGA-272:
-----------------------------------
I think the reason is we use static linking for those libs. So, if we use
static libs for glog, the problem should be gone.
However, the macro should be included somewhere maybe.
> singa::logging classes are missing from libsinga.so
> ----------------------------------------------------
>
> Key: SINGA-272
> URL: https://issues.apache.org/jira/browse/SINGA-272
> Project: Singa
> Issue Type: Bug
> Environment: Linux (Ubuntu)
> Reporter: Moaz Reyad
>
> When I try to compile a C++ file like
> {code:title=test.cpp|borderStyle=solid}
> #include "singa/io/encoder.h"
> #include "singa/io/decoder.h"
> #include <iostream>
> #include <sstream>
> #include <algorithm>
> using namespace std;
> using singa::Shape;
> using singa::Tensor;
> int main()
> {
> cout << "Testing..." << endl;
> singa::CSVEncoder encoder;
> singa::CSVDecoder decoder;
> singa::DecoderConf decoder_conf;
> decoder_conf.set_has_label(true);
> decoder.Setup(decoder_conf);
> float in_data[] = {1.23f, 4.5f, 5.1f, 3.33f, 0.44f};
> std::string in_str = "2, 1.23, 4.5, 5.1, 3.33, 0.44";
> int in_label = 2;
> size_t size = 5;
> std::vector<Tensor> input;
> Tensor data(Shape{size}, singa::kFloat32), label(Shape{1}, singa::kInt);
> data.CopyDataFromHostPtr<float>(in_data, size);
> label.CopyDataFromHostPtr<int>(&in_label, 1);
> input.push_back(data);
> input.push_back(label);
> std::string value = encoder.Encode(input);
> in_str.erase(std::remove(in_str.begin(), in_str.end(), ' '), in_str.end());
> std::vector<Tensor> output = decoder.Decode(value);
> const auto* out_data = output.at(0).data<float>();
> const auto* out_label = output.at(1).data<int>();
> return 0;
> }
> {code}
> I get this error:
> {code:title=compiling|borderStyle=solid}
> $ g++ ./test.cpp -l singa
> /tmp/cc46xzSI.o: In function `singa::Block::data() const':
> test.cpp:(.text._ZNK5singa5Block4dataEv[_ZNK5singa5Block4dataEv]+0x4b):
> undefined reference to `singa::logging::LogMessageFatal::LogMessageFatal(char
> const*, int)'
> test.cpp:(.text._ZNK5singa5Block4dataEv[_ZNK5singa5Block4dataEv]+0x7f):
> undefined reference to `singa::logging::LogMessageFatal::~LogMessageFatal()'
> test.cpp:(.text._ZNK5singa5Block4dataEv[_ZNK5singa5Block4dataEv]+0xba):
> undefined reference to `singa::logging::LogMessageFatal::~LogMessageFatal()'
> collect2: error: ld returned 1 exit status
> {code}
> I think singa::logging classes are not linked correctly in libsinga.so during
> installation.
> The workaround is to do:
> $g++ -DUSE_GLOG ./test.cpp -l singa -l glog
> But it is better if libsinga.so is built with singa::logging classes.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)