[Bug 1514717] [NEW] linker error when disabling CXX11_ABI

Alexander List 1514717 at bugs.launchpad.net
Tue Nov 10 07:31:29 UTC 2015


Public bug reported:

We have third party libraries that worked fine on Ubuntu 15.04 x86_64
using boost1.55 and gcc-4.9.2.

These libraries (we do not have access to the source, so recompiling is
not an option) rely on the old ABI for std::string

On 15.10, if we disable the CXX11 ABI, we get a linker error when
linking against boost libraries.

I am attaching sample code to reproduce the issue.

# this works fine
g++ -o main main.cc -lboost_program_options

# this does not
g++ -o main main.cc -lboost_program_options  -D_GLIBCXX_USE_CXX11_ABI=0

alex at wily:~$ g++ -o main main.cc -lboost_program_options  -D_GLIBCXX_USE_CXX11_ABI=0
/tmp/ccVJh1if.o: In function `main':
main.cc:(.text+0x8f): undefined reference to `boost::program_options::options_description::options_description(std::string const&, unsigned int, unsigned int)'
/tmp/ccVJh1if.o:(.rodata._ZTVN5boost15program_options11typed_valueISscEE[_ZTVN5boost15program_options11typed_valueISscEE]+0x38): undefined reference to `boost::program_options::value_semantic_codecvt_helper<char>::parse(boost::any&, std::vector<std::string, std::allocator<std::string> > const&, bool) const'
/tmp/ccVJh1if.o: In function `boost::program_options::typed_value<std::string, char>::name() const':
main.cc:(.text._ZNK5boost15program_options11typed_valueISscE4nameEv[_ZNK5boost15program_options11typed_valueISscE4nameEv]+0x35): undefined reference to `boost::program_options::arg'
/tmp/ccVJh1if.o: In function `boost::program_options::typed_value<std::string, char>::xparse(boost::any&, std::vector<std::string, std::allocator<std::string> > const&) const':
main.cc:(.text._ZNK5boost15program_options11typed_valueISscE6xparseERNS_3anyERKSt6vectorISsSaISsEE[_ZNK5boost15program_options11typed_valueISscE6xparseERNS_3anyERKSt6vectorISsSaISsEE]+0xa9): undefined reference to `boost::program_options::validate(boost::any&, std::vector<std::string, std::allocator<std::string> > const&, std::string*, int)'
collect2: error: ld returned 1 exit status

ProblemType: Bug
DistroRelease: Ubuntu 15.10
Package: libboost1.58-dev 1.58.0+dfsg-3.1ubuntu1
ProcVersionSignature: Ubuntu 4.2.0-16.19-generic 4.2.3
Uname: Linux 4.2.0-16-generic x86_64
ApportVersion: 2.19.1-0ubuntu4
Architecture: amd64
Date: Tue Nov 10 15:04:35 2015
Dependencies:
 
InstallationDate: Installed on 2015-11-09 (0 days ago)
InstallationMedia: Ubuntu-Server 15.10 "Wily Werewolf" - Release amd64 (20151021)
ProcEnviron:
 TERM=xterm
 PATH=(custom, no user)
 XDG_RUNTIME_DIR=<set>
 LANG=en_US.UTF-8
 SHELL=/bin/bash
SourcePackage: boost1.58
UpgradeStatus: No upgrade log present (probably fresh install)

** Affects: boost1.58 (Ubuntu)
     Importance: Undecided
         Status: New


** Tags: amd64 apport-bug wily

** Attachment added: "Sample code to demonstrate the issue"
   https://bugs.launchpad.net/bugs/1514717/+attachment/4515915/+files/main.cc

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to boost1.58 in Ubuntu.
https://bugs.launchpad.net/bugs/1514717

Title:
  linker error when disabling CXX11_ABI

Status in boost1.58 package in Ubuntu:
  New

Bug description:
  We have third party libraries that worked fine on Ubuntu 15.04 x86_64
  using boost1.55 and gcc-4.9.2.

  These libraries (we do not have access to the source, so recompiling
  is not an option) rely on the old ABI for std::string

  On 15.10, if we disable the CXX11 ABI, we get a linker error when
  linking against boost libraries.

  I am attaching sample code to reproduce the issue.

  # this works fine
  g++ -o main main.cc -lboost_program_options

  # this does not
  g++ -o main main.cc -lboost_program_options  -D_GLIBCXX_USE_CXX11_ABI=0

  alex at wily:~$ g++ -o main main.cc -lboost_program_options  -D_GLIBCXX_USE_CXX11_ABI=0
  /tmp/ccVJh1if.o: In function `main':
  main.cc:(.text+0x8f): undefined reference to `boost::program_options::options_description::options_description(std::string const&, unsigned int, unsigned int)'
  /tmp/ccVJh1if.o:(.rodata._ZTVN5boost15program_options11typed_valueISscEE[_ZTVN5boost15program_options11typed_valueISscEE]+0x38): undefined reference to `boost::program_options::value_semantic_codecvt_helper<char>::parse(boost::any&, std::vector<std::string, std::allocator<std::string> > const&, bool) const'
  /tmp/ccVJh1if.o: In function `boost::program_options::typed_value<std::string, char>::name() const':
  main.cc:(.text._ZNK5boost15program_options11typed_valueISscE4nameEv[_ZNK5boost15program_options11typed_valueISscE4nameEv]+0x35): undefined reference to `boost::program_options::arg'
  /tmp/ccVJh1if.o: In function `boost::program_options::typed_value<std::string, char>::xparse(boost::any&, std::vector<std::string, std::allocator<std::string> > const&) const':
  main.cc:(.text._ZNK5boost15program_options11typed_valueISscE6xparseERNS_3anyERKSt6vectorISsSaISsEE[_ZNK5boost15program_options11typed_valueISscE6xparseERNS_3anyERKSt6vectorISsSaISsEE]+0xa9): undefined reference to `boost::program_options::validate(boost::any&, std::vector<std::string, std::allocator<std::string> > const&, std::string*, int)'
  collect2: error: ld returned 1 exit status

  ProblemType: Bug
  DistroRelease: Ubuntu 15.10
  Package: libboost1.58-dev 1.58.0+dfsg-3.1ubuntu1
  ProcVersionSignature: Ubuntu 4.2.0-16.19-generic 4.2.3
  Uname: Linux 4.2.0-16-generic x86_64
  ApportVersion: 2.19.1-0ubuntu4
  Architecture: amd64
  Date: Tue Nov 10 15:04:35 2015
  Dependencies:
   
  InstallationDate: Installed on 2015-11-09 (0 days ago)
  InstallationMedia: Ubuntu-Server 15.10 "Wily Werewolf" - Release amd64 (20151021)
  ProcEnviron:
   TERM=xterm
   PATH=(custom, no user)
   XDG_RUNTIME_DIR=<set>
   LANG=en_US.UTF-8
   SHELL=/bin/bash
  SourcePackage: boost1.58
  UpgradeStatus: No upgrade log present (probably fresh install)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/boost1.58/+bug/1514717/+subscriptions



More information about the foundations-bugs mailing list