Skip to content

enable ENABLE_HEADLESS_RENDERING=ON cause undefined reference to `open3d::visualization::gui::Application::GetInstance #5943

@lichangW

Description

@lichangW

Checklist

Steps to reproduce the issue

I first cloned Open3D by:

I build C++ open3d lib from source , version: 0.16.0;
it worked well when the ENABLE_HEADLESS_RENDERING option is OFF, but when I open the Option like below and build out the lib, the bin directory in the install location is disappear:
image

when I build the demo (https://github.com/isl-org/Open3D/blob/master/examples/cpp/OffscreenRendering.cpp, the cpp in the example seems build with BUILD_GUI on ?) using the open3d lib(ENABLE_HEADLESS_RENDERING=ON) , it will be failed during linking to Open3D::Open3D with many undefined errors;

thanks for help

I build Open3D (on Ubuntu 18.04) with:

mkdir build
cd build
cmake -DCMAKE_FIND_ROOT_PATH=/usr/lib/aarch64-linux-gnu \
      -DCMAKE_C_COMPILER=/usr/bin/aarch64-linux-gnu-gcc \
      -DCMAKE_CXX_COMPILER=/usr/bin/aarch64-linux-gnu-g++ \
      -DCMAKE_SYSTEM_PROCESSOR=aarch64 \
      -DCMAKE_INSTALL_PREFIX=/opt/aarch64/open3d_0.16 \
      -DBUILD_SHARED_LIBS=ON \
      -DBUILD_PYTHON_MODULE=OFF \
      -DBUILD_EXAMPLES=OFF \
      -DCMAKE_BUILD_TYPE=Release \
      -DGLIBCXX_USE_CXX11_ABI=ON \
      -DENABLE_HEADLESS_RENDERING=ON \
      ..
make -j$(nproc)

image

when build open3d lib warning occure and the bin directory disappear when install :
the bin directory in the install location is disappear:
image
image

when build example , error occure:

image

Error message

/usr/bin/ld: warning: //usr/lib/aarch64-linux-gnu/libLLVM-10.so.1: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0000000
/usr/bin/ld: warning: //usr/lib/aarch64-linux-gnu/libLLVM-10.so.1: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0000000
/usr/bin/ld: warning: //usr/lib/aarch64-linux-gnu/libLLVM-10.so.1: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0000000
/usr/bin/ld: warning: //usr/lib/aarch64-linux-gnu/libLLVM-10.so.1: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0000000
CMakeFiles/easyedge_pointcloud_demo.dir/demo.cpp.o: In function `save_pointcloud2png_without_screen(int, char const**, std::shared_ptr<open3d::geometry::PointCloud>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
demo.cpp:(.text+0xaec): undefined reference to `open3d::visualization::gui::Application::GetInstance()'
demo.cpp:(.text+0xb00): undefined reference to `open3d::visualization::gui::Application::Initialize(int, char const**)'
demo.cpp:(.text+0xb04): undefined reference to `open3d::visualization::rendering::EngineInstance::EnableHeadless()'
demo.cpp:(.text+0xb08): undefined reference to `open3d::visualization::rendering::EngineInstance::GetInstance()'
demo.cpp:(.text+0xb10): undefined reference to `open3d::visualization::rendering::EngineInstance::GetResourceManager()'
demo.cpp:(.text+0xb38): undefined reference to `open3d::visualization::rendering::FilamentRenderer::FilamentRenderer(filament::Engine&, int, int, open3d::visualization::rendering::FilamentResourceManager&)'
demo.cpp:(.text+0xb58): undefined reference to `open3d::visualization::rendering::Open3DScene::Open3DScene(open3d::visualization::rendering::Renderer&)'
demo.cpp:(.text+0xba8): undefined reference to `open3d::visualization::rendering::Open3DScene::AddGeometry(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, open3d::geometry::Geometry3D const*, open3d::visualization::rendering::MaterialRecord const&, bool)'
demo.cpp:(.text+0xbc4): undefined reference to `open3d::visualization::rendering::Open3DScene::ShowAxes(bool)'
demo.cpp:(.text+0xbcc): undefined reference to `open3d::visualization::rendering::Open3DScene::GetCamera() const'
demo.cpp:(.text+0xc1c): undefined reference to `open3d::visualization::rendering::Open3DScene::GetCamera() const'
demo.cpp:(.text+0xcc8): undefined reference to `open3d::visualization::rendering::Open3DScene::GetView() const'
demo.cpp:(.text+0xcd4): undefined reference to `open3d::visualization::rendering::Open3DScene::GetScene() const'
demo.cpp:(.text+0xcfc): undefined reference to `open3d::visualization::gui::Application::RenderToImage(open3d::visualization::rendering::Renderer&, open3d::visualization::rendering::View*, open3d::visualization::rendering::Scene*, int, int)'
demo.cpp:(.text+0xd84): undefined reference to `open3d::visualization::rendering::Open3DScene::~Open3DScene()'
demo.cpp:(.text+0xdbc): undefined reference to `open3d::visualization::gui::Application::OnTerminate()'
collect2: error: ld returned 1 exit status

Open3D, Python and System information

- Operating system: Ubuntu 18.04 
- System architecture: x86 / arm64 
- build from source
- Compiler version (if built from source): gcc 7.5 / clang 7.0

Additional information

And we can see there is no EnableHeadless in libOpen3D.so build with ENABLE_HEADLESS_RENDERING=ON
image

Metadata

Metadata

Assignees

No one assigned

    Labels

    build/installBuild or installation issue

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions