← Back to team overview

hugin-devs team mailing list archive

[Bug 685904] Re: boost build issue with -Wl, --as-needed or binutils-gold

 

** Changed in: enblend
       Status: New => Fix Committed

** Changed in: enblend
   Importance: Undecided => Medium

** Changed in: enblend
     Assignee: (unassigned) => Christoph Spiel (cspiel)

-- 
You received this bug notification because you are a member of Hugin
Developers, which is subscribed to Enblend.
https://bugs.launchpad.net/bugs/685904

Title:
  boost build issue with -Wl,--as-needed or binutils-gold

Status in Enblend:
  Fix Committed

Bug description:
  Hello,

programs including the boost_filesystem headers also should be linked against *both*  boost_filesystem headers and boost system, since boost_system functions are invoked directly via inline functions in the boost_filesystem headers. The autoconf setup of enblend-enfuse does not do this.

enblend 4.0 will therefore fail to build from source if binutils-gold is used or LDFLAGS="-Wl,--as-needed" is set:
----------------------------------------------------------------
i686-linux-gnu-g++   -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -I../../include -DVIGRA_STATIC_LIB -pthread -I/usr/include/OpenEXR   -Wall -g -O2 -fopenmp   -Wl,-Bsymbolic-functions -o enblend enblend-enblend.o enblend-gpu.o enblend-error_message.o enblend-filenameparse.o enblend-filespec.o enblend-self_test.o enblend-tiff_message.o vigra_impex/libvigra_impex.a -lGLEW -lGLU -lGL  -lm -lglut -lGLU -lGL  -lm -lboost_filesystem  -pthread -lIlmImf -lz -lImath -lHalf -lIex -lIlmThread   -lxmi -llcms -ltiff -lpng -ljpeg -lz 
enblend-filenameparse.o: In function `__static_initialization_and_destruction_0':
/usr/include/boost/system/error_code.hpp:208: undefined reference to `boost::system::get_system_category()'
/usr/include/boost/system/error_code.hpp:209: undefined reference to `boost::system::get_generic_category()'
/usr/include/boost/system/error_code.hpp:214: undefined reference to `boost::system::get_generic_category()'
/usr/include/boost/system/error_code.hpp:215: undefined reference to `boost::system::get_generic_category()'
/usr/include/boost/system/error_code.hpp:216: undefined reference to `boost::system::get_system_category()'
collect2: ld returned 1 exit status
make[5]: *** [enblend] Error 1
-----------------------------------------------

hg head behaves slightly differently, the autoconf test fails and the build falls back to Boost's generic filename parsing. The cmake setup already checks for both libraries afaict.

FWIW Ubuntu linux has recently enabled LDFLAGS="-Wl,--as-needed" by default.

Works-for-me patch attached.