> On Nov 26, 2015, at 4:51 PM, Ryan Schmidt <[email protected]> wrote:
> 
> 
> On Nov 26, 2015, at 9:03 AM, Mark Brethen wrote:
> 
>> The error message:
>> 
>> :info:build ld: symbol(s) not found for architecture x86_64
>> :info:build clang: error: linker command failed with exit code 1 (use -v to 
>> see invocation)
>> :info:build make[1]: *** [astgen] Error 1
>> 
>> says "symbol(s) not found for architecture x86_64" instead of "symbol(s) not 
>> found for architecture i386”. Can I tweak my build settings to allow a 
>> 32-bit build?
> 
> This error message means you are building for x86_64, and the symbols were 
> not found for that architecture. It does not make any statement as to whether 
> the symbols would be found for any other architecture nor whether the 
> software supports or does not support x86_64. It might mean you forgot to 
> specify the name of the library in which the symbols are found, or it could 
> indicate a libc++/libstdc++ incompatibility. Or it could mean there is an 
> architecture mismatch between the program and the library it's using, but 
> since Macs have been x86_64 for many years that's not the first place I'd 
> look.
> 
> 

The last update of elkhound by the original developer was in 2006. Since then, 
there have been a few updates by other parties. I think the one I was using has 
some issues. I tried building another today that is bundled with oink-stack 
(https://github.com/dsw/oink-stack). This one was updated in june and gets to 
the last build phase with these errors:

:info:build /usr/bin/clang++ -o elkhound -DGRAMANL_MAIN -g -Wall 
-Wno-deprecated -D__UNIX__ -O2 -DNDEBUG -I. -I../smbase -I../ast -Ic 
-fno-strict-aliasing gramanl.cc gramexpl.o asockind.o grammar.o emitcode.o 
mlsstr.o genml.o gramast.ast.gen.o gramlex.yy.o grampar.o grampar.tab.o 
parsetables.o -g -Wall -Werror ../ast/libast.a ../smbase/libsmbase.a
:info:build In file included from gramanl.cc:4:
:info:build In file included from ./gramanl.h:20:
:info:build ./grammar.h:197:18: error: 'Terminal::toString' hides overloaded 
virtual function [-Werror,-Woverloaded-virtual]
:info:build   virtual string toString(bool quoteAliases = false) const;
:info:build                  ^
:info:build ./grammar.h:124:18: note: hidden overloaded virtual function 
'Symbol::toString' declared here: different number of parameters (0 vs 1)
:info:build   virtual string toString() const { return string(name); }
:info:build                  ^
:info:build ./grammar.h:299:16: error: 'Nonterminal::print' hides overloaded 
virtual function [-Werror,-Woverloaded-virtual]
:info:build   virtual void print(std::ostream &os, Grammar const *grammer = 
NULL) const;
:info:build                ^
:info:build ./grammar.h:115:16: note: hidden overloaded virtual function 
'Symbol::print' declared here: different number of parameters (1 vs 2)
:info:build   virtual void print(std::ostream &os) const;
:info:build                ^
:info:build 2 errors generated.
:info:build make[1]: *** [elkhound] Error 1

In the definition of the Terminal and Nonterminal classes below, I can add 
declarations to make the functions from Symbol visible: 'using 
Symbol::toString’ and 'using Symbol::print’ , right?

class Terminal : public Symbol {
// -------- representation ---------
public:     // data

  LocString alias;

  int precedence;

  AssocKind associativity;

  StringRef classifyParam;      // name of parameter to 'classify'
  LocString classifyCode;       // code to reclassify a token type

// ------ annotation ------
public:     // data
  // terminal class index - this terminal's id; -1 means unassigned
  int termIndex;

protected:  // funcs  
  virtual void internalPrintDDM(std::ostream &os) const;

public:     // funcs
  Terminal(LocString const &name)        // canonical name for terminal class
    : Symbol(name, true /*terminal*/),
      alias(),
      precedence(0),
      associativity(AK_NONASSOC),
      classifyParam(NULL),
      termIndex(-1)
  {}

  Terminal(Flatten &flat);
  void xfer(Flatten &flat);

  virtual void print(std::ostream &os) const;
  OSTREAM_OPERATOR(Terminal)

  virtual bool anyDDM() const;

  // return alias if defined, name otherwise
  virtual string toString(bool quoteAliases = false) const;
};


class Nonterminal : public Symbol {
// ---------- representation --------
public:
  StringRef mergeParam1;    // param name for first alternative
  StringRef mergeParam2;    // and 2nd alt
  LocString mergeCode;      // code to resolve then

  StringRef keepParam;      // name of parameter to 'keep'
  LocString keepCode;       // code to decide whether to keep a reduction

  bool maximal;             // if true, use maximal munch disambiguation
  
  SObjList<Nonterminal> subsets;      // preferred subsets (for scannerless)

protected:  // funcs
  virtual void internalPrintDDM(std::ostream &os) const;

public:     // funcs
  Nonterminal(LocString const &name, bool isEmptyString=false);
  virtual ~Nonterminal();

  Nonterminal(Flatten &flat);
  void xfer(Flatten &flat);
  void xferSerfs(Flatten &flat, Grammar &g);

  virtual void print(std::ostream &os, Grammar const *grammer = NULL) const;
  OSTREAM_OPERATOR(Nonterminal)

  virtual bool anyDDM() const;



Mark




_______________________________________________
macports-dev mailing list
[email protected]
https://lists.macosforge.org/mailman/listinfo/macports-dev

Reply via email to