Skip to content

Conversation

@Anthony-Mai
Copy link
Contributor

template<> void ExprNode::accept(IRVisitor *v, const Expr& e) needs to be export now because of recent commit apache/tvm@859bda8

Anthony-Mai and others added 4 commits January 15, 2019 18:07
By default, compilation of Linux shared library modules (*.so files)
exports all symbols. This creates large module files as the export
symbol tables contains too many entries. The correct approach is
export nothing by default and anything that needs to be exported
must be explicitly specified. This is accomplished by the following
steps:

1. In the Makefile, add "-fvisibility=hidden" flag. You can search
   for "-fPIC" to find the appropriate place to add the flag. This
   hides symbols by default if not explicitly specified otherwise.

2. To declaration of any symbol to be exported, add this attribute:
      __attribute__((visibility("default")))
   The attribute string can be added using a macro definition. It
   should be added right before the return type for functions, or
   right after the 'class' or 'struct' keyword for class/struct.

For more info on shared module export symbol visibility read:
    http://anadoxin.org/blog/control-over-symbol-exports-in-gcc.html
… all symbols

which is inefficient, and change was make to do explicit exports. So now some of
the symbols become unresolved external symbols and need to be explicitly exported.
@tqchen tqchen merged commit 97efb11 into dmlc:master Jan 25, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants