singa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "wangwei (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (SINGA-272) singa::logging classes are missing from libsinga.so
Date Tue, 22 Nov 2016 13:55:58 GMT

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

wangwei commented on SINGA-272:
-------------------------------

If libA.so's code uses libB.so, and libA.so is generated by linking it with libB.so, when
I use functions from libA.so in my code C.bin, it would be better to generate C.bin without
linking it with with libB.so.

For libraries like protobuf, opencv, etc., we don't need to link their dependent libs into
our own executable files when we use them.
Is it because they don't have other dependency, or any other linking arguments for fixing
this issue?



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

Mime
View raw message