描述错误
无法按照此处描述的教程安装Open3D: http ://open3d.org/docs/getting_started.html
尝试了解决方案#441,但不起作用。
无法以[56%]的速度制作文件,
[ 1%] Built target EncodeShader
[ 1%] Built target ShaderFileTarget
[ 18%] Built target Visualization
[ 20%] Built target tinyfiledialogs
[ 41%] Built target Core
[ 53%] Built target IO
[ 54%] Built target Open3D
[ 55%] Built target ConvertPointCloud
[ 56%] Linking CXX executable ../bin/ManuallyCropGeometry
../lib/libOpen3D.a(PinholeCameraTrajectory.cpp.o): In function `three::PinholeCameraTrajectory::ConvertFromJsonValue(Json::Value const&)':
PinholeCameraTrajectory.cpp:(.text+0x306): undefined reference to `Json::Value::asString() const'
../lib/libOpen3D.a(FileJSON.cpp.o): In function `three::(anonymous namespace)::ReadIJsonConvertibleFromJSONStream(std::istream&, three::IJsonConvertible&)':
FileJSON.cpp:(.text+0x78): undefined reference to `Json::CharReaderBuilder::operator[](std::string)'
FileJSON.cpp:(.text+0xca): undefined reference to `Json::parseFromStream(Json::CharReader::Factory const&, std::istream&, Json::Value*, std::string*)'
../lib/libOpen3D.a(FileJSON.cpp.o): In function `three::(anonymous namespace)::WriteIJsonConvertibleToJSONStream(std::ostream&, three::IJsonConvertible const&)':
FileJSON.cpp:(.text+0x8ce): undefined reference to `Json::StreamWriterBuilder::operator[](std::string)'
FileJSON.cpp:(.text+0x930): undefined reference to `Json::StreamWriterBuilder::operator[](std::string)'
../lib/libOpen3D.a(SelectionPolygonVolume.cpp.o): In function `three::SelectionPolygonVolume::ConvertToJsonValue(Json::Value&) const':
SelectionPolygonVolume.cpp:(.text+0x183): undefined reference to `Json::Value::Value(std::string const&)'
../lib/libOpen3D.a(SelectionPolygonVolume.cpp.o): In function `three::SelectionPolygonVolume::ConvertFromJsonValue(Json::Value const&)':
SelectionPolygonVolume.cpp:(.text+0x30b): undefined reference to `Json::Value::asString() const'
SelectionPolygonVolume.cpp:(.text+0x3a3): undefined reference to `Json::Value::asString() const'
../lib/libOpen3D.a(RenderOption.cpp.o): In function `three::RenderOption::ConvertFromJsonValue(Json::Value const&)':
RenderOption.cpp:(.text+0x816): undefined reference to `Json::Value::asString() const'
../lib/libOpen3D.a(ViewTrajectory.cpp.o): In function `three::ViewTrajectory::ConvertFromJsonValue(Json::Value const&)':
ViewTrajectory.cpp:(.text+0x229b): undefined reference to `Json::Value::asString() const'
collect2: error: ld returned 1 exit status
Tools/CMakeFiles/ManuallyCropGeometry.dir/build.make:99: recipe for target 'bin/ManuallyCropGeometry' failed
make[2]: *** [bin/ManuallyCropGeometry] Error 1
CMakeFiles/Makefile2:392: recipe for target 'Tools/CMakeFiles/ManuallyCropGeometry.dir/all' failed
make[1]: *** [Tools/CMakeFiles/ManuallyCropGeometry.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2
使用pip安装open3d还会报告
Python 3.6.5 |Anaconda, Inc.| (default, Apr 29 2018, 16:14:56)
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import open3d
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "~/.local/lib/python3.6/site-packages/open3d/__init__.py", line 9, in <module>
from open3d.linux import *
File "~/.local/lib/python3.6/site-packages/open3d/linux/__init__.py", line 7, in <module>
globals().update(importlib.import_module('open3d.linux.open3d').__dict__)
File "~/miniconda3/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
ImportError: ~/.local/lib/python3.6/site-packages/open3d/linux/open3d.so: undefined symbol: _Py_ZeroStruct
重现
重现行为的步骤:
按照教程重新构建Open3D
git clone https://github.com/IntelVCL/Open3D
光盘Open3D
./util/scripts/install-deps-ubuntu.sh
mkdir构建
光盘制作
cmake ../src
make -j --------------------- [已报告错误]
桌面(请完成以下信息):
额外的背景
在此处添加有关该问题的任何其他上下文。
嗨,我认为您系统中已经安装的jsoncpp lib与Open3D中与jsoncpp相关的代码相冲突。 解决方法是从源代码构建jsoncpp。 您可以尝试以下方法并分享您的经验吗?
cmake -DBUILD_JSONCPP=ON ../src/
谢谢,它可以帮助我解决问题。
程序
cd ~/Open3D
sudo rm -rf build
mkdir build && cd build
cmake -DBUILD_JSONCPP=ON ../src/
make -j ----[Passed]
sudo make install
谢谢@DKandrew! 解决此问题。