You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@singa.apache.org by "Xie Zhongle (JIRA)" <ji...@apache.org> on 2016/11/22 13:28:58 UTC

[jira] [Comment Edited] (SINGA-272) singa::logging classes are missing from libsinga.so

    [ https://issues.apache.org/jira/browse/SINGA-272?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15686716#comment-15686716 ] 

Xie Zhongle edited comment on SINGA-272 at 11/22/16 1:28 PM:
-------------------------------------------------------------

This is neither a bug nor an issue.
Since you compiled singa with glog, you should define the macro and link glog lib when you write your own code.
If you do not want to use glog, please uninstall your glog library before you compile/install singa libs.
I am adding a new option to disable glog usage manually even if glog lib is detected by cmake in the new PR.


was (Author: zhongle):
This is not a bug or an issue.
Since you compiled singa with glog, you should define the macro and link glog lib when you write your own code.
If you do not want to use glog, please uninstall your glog library before you compile/install singa libs.
I am adding a new option to disable glog usage manually even if glog lib is detected by cmake in the new PR.

> 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)