[pdal] Minimum Boost, embedded Boost, and undefined symbols

Bradley Chambers brad.chambers at gmail.com
Mon Mar 26 12:01:29 EDT 2012


I found two previous tickets stating that the minimum Boost version should
be 1.41 (https://github.com/PDAL/PDAL/issues/51 and
https://github.com/PDAL/PDAL/pull/55), and yet the main CMakeLists file
requires 1.48 (references to 1.41 disappeared around
https://github.com/PDAL/PDAL/commit/41b3b39d85c073a7325d03bf853477c71f37a05c).
Should the CMakeLists file be downgraded once again to require 1.41?

I believe the embedded PDAL Boost may be taking over a bit too gracefully
if the initial find_package call fails. I discovered this when attempting
to run CMake with Boost 1.47 (before noticing the dependency on 1.48).
Because the embedded package took over, and CMake completed without errors,
this took a while to figure out. In hindsight, there was a status message
that Boost was not found, and embedded Boost would be used, but it's easy
to overlook. If the user chooses to not use embedded Boost, should the
default behavior really be to use it if CMake runs into any issues?

Finally, when building on OS X and using the embedded Boost libraries, I
currently get a slew of errors about undefined symbols in
Boost::filesystem3.

Undefined symbols for architecture x86_64:
  "boost::filesystem3::detail::remove(boost::filesystem3::path const&,
boost::system::error_code*)", referenced from:
      boost::filesystem3::remove(boost::filesystem3::path const&) in
FileUtils.o
  "boost::filesystem3::detail::rename(boost::filesystem3::path const&,
boost::filesystem3::path const&, boost::system::error_code*)", referenced
from:
      boost::filesystem3::rename(boost::filesystem3::path const&,
boost::filesystem3::path const&) in FileUtils.o
  "boost::filesystem3::detail::status(boost::filesystem3::path const&,
boost::system::error_code*)", referenced from:
      boost::filesystem3::exists(boost::filesystem3::path const&) in
FileUtils.o
  "boost::filesystem3::detail::file_size(boost::filesystem3::path const&,
boost::system::error_code*)", referenced from:
      boost::filesystem3::file_size(boost::filesystem3::path const&) in
FileUtils.o
  "boost::filesystem3::detail::current_path(boost::system::error_code*)",
referenced from:
      boost::filesystem3::current_path() in FileUtils.o
  "boost::filesystem3::absolute(boost::filesystem3::path const&,
boost::filesystem3::path const&)", referenced from:
      pdal::FileUtils::toAbsolutePath(std::string const&) in FileUtils.o
      pdal::FileUtils::toAbsolutePath(std::string const&, std::string) in
FileUtils.o
  "boost::filesystem3::path::parent_path() const", referenced from:
      pdal::FileUtils::getDirectory(std::string const&) in FileUtils.o
  "boost::filesystem3::path::root_directory() const", referenced from:
      boost::filesystem3::path::has_root_directory() const in FileUtils.o
  "boost::filesystem3::path::filename() const", referenced from:
      pdal::StageFactory::loadPlugins() in StageFactory.o
  "boost::filesystem3::path::extension() const", referenced from:
      pdal::StageFactory::loadPlugins() in StageFactory.o
  "boost::filesystem3::path::stem() const", referenced from:
      pdal::StageFactory::loadPlugins() in StageFactory.o

"boost::filesystem3::directory_entry::m_get_symlink_status(boost::system::error_code*)
const", referenced from:
      boost::filesystem3::directory_entry::symlink_status() const in
StageFactory.o
  "boost::filesystem3::path::begin() const", referenced from:
      boost::filesystem3::operator<(boost::filesystem3::path const&,
boost::filesystem3::path const&) in StageFactory.o
  "boost::filesystem3::path::end() const", referenced from:
      boost::filesystem3::operator<(boost::filesystem3::path const&,
boost::filesystem3::path const&) in StageFactory.o

"boost::filesystem3::path::m_path_iterator_increment(boost::filesystem3::path::iterator&)",
referenced from:
      boost::filesystem3::path::iterator::increment() in StageFactory.o

"boost::filesystem3::detail::directory_iterator_increment(boost::filesystem3::directory_iterator&,
boost::system::error_code*)", referenced from:
      boost::filesystem3::directory_iterator::increment() in StageFactory.o

"boost::filesystem3::detail::directory_iterator_construct(boost::filesystem3::directory_iterator&,
boost::filesystem3::path const&, boost::system::error_code*)", referenced
from:

boost::filesystem3::directory_iterator::directory_iterator(boost::filesystem3::path
const&) in StageFactory.o
  "boost::filesystem3::detail::dir_itr_close(void*&, void*&)", referenced
from:
      boost::filesystem3::detail::dir_itr_imp::~dir_itr_imp() in
StageFactory.o
  "boost::filesystem3::detail::unique_path(boost::filesystem3::path const&,
boost::system::error_code*)", referenced from:
      boost::filesystem3::unique_path(boost::filesystem3::path const&) in
Utils.o

"boost::filesystem3::detail::temp_directory_path(boost::system::error_code*)",
referenced from:
      boost::filesystem3::temp_directory_path() in Utils.o
  "boost::filesystem3::path::operator/=(boost::filesystem3::path const&)",
referenced from:
      boost::filesystem3::operator/(boost::filesystem3::path const&,
boost::filesystem3::path const&) in Utils.o
ld: symbol(s) not found for architecture x86_64

Brad
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/pdal/attachments/20120326/5752ec7b/attachment.html


More information about the pdal mailing list