1

I was trying to get a clean instal of blender on my computer following the steps from this wepage

On the build steps from the wepage after the make command the build crashes:

$ cd ~/blender-git/blender
$ make
[  1%] Built target bf_intern_clog
[ ...] Other succesful steps
[100%] Linking CXX executable ../../bin/blender
../../lib/libbf_intern_iksolver.a(IK_Solver.cpp.o):IK_Solver.cpp:function IK_FreeSolver: error: undefined reference to 'IK_QJacobian::~IK_QJacobian()'
../../lib/libbf_intern_iksolver.a(IK_Solver.cpp.o):IK_Solver.cpp:function IK_FreeSolver: error: undefined reference to 'IK_QJacobian::~IK_QJacobian()'
../../lib/libbf_intern_iksolver.a(IK_QJacobianSolver.cpp.o):IK_QJacobianSolver.cpp:function IK_QJacobianSolver::IK_QJacobianSolver(): error: undefined reference to 'IK_QJacobian::IK_QJacobian()'
../../lib/libbf_intern_iksolver.a(IK_QJacobianSolver.cpp.o):IK_QJacobianSolver.cpp:function IK_QJacobianSolver::IK_QJacobianSolver(): error: undefined reference to 'IK_QJacobian::IK_QJacobian()'
../../lib/libbf_intern_iksolver.a(IK_QJacobianSolver.cpp.o):IK_QJacobianSolver.cpp:function IK_QJacobianSolver::Setup(IK_QSegment*, std::list<IK_QTask*, std::allocator<IK_QTask*> >&): error: undefined reference to 'IK_QJacobian::ArmMatrices(int, int)'
../../lib/libbf_intern_iksolver.a(IK_QJacobianSolver.cpp.o):IK_QJacobianSolver.cpp:function IK_QJacobianSolver::Setup(IK_QSegment*, std::list<IK_QTask*, std::allocator<IK_QTask*> >&): error: undefined reference to 'IK_QJacobian::SetDoFWeight(int, double)'
../../lib/libbf_intern_iksolver.a(IK_QJacobianSolver.cpp.o):IK_QJacobianSolver.cpp:function IK_QJacobianSolver::Setup(IK_QSegment*, std::list<IK_QTask*, std::allocator<IK_QTask*> >&): error: undefined reference to 'IK_QJacobian::ArmMatrices(int, int)'
../../lib/libbf_intern_iksolver.a(IK_QJacobianSolver.cpp.o):IK_QJacobianSolver.cpp:function IK_QJacobianSolver::Solve(IK_QSegment*, std::list<IK_QTask*, std::allocator<IK_QTask*> >, double, int): error: undefined reference to 'IK_QJacobian::Invert()'
../../lib/libbf_intern_iksolver.a(IK_QJacobianSolver.cpp.o):IK_QJacobianSolver.cpp:function IK_QJacobianSolver::Solve(IK_QSegment*, std::list<IK_QTask*, std::allocator<IK_QTask*> >, double, int): error: undefined reference to 'IK_QJacobian::SubTask(IK_QJacobian&)'
../../lib/libbf_intern_iksolver.a(IK_QJacobianSolver.cpp.o):IK_QJacobianSolver.cpp:function IK_QJacobianSolver::Solve(IK_QSegment*, std::list<IK_QTask*, std::allocator<IK_QTask*> >, double, int): error: undefined reference to 'IK_QJacobian::AngleUpdateNorm() const'
../../lib/libbf_intern_iksolver.a(IK_QJacobianSolver.cpp.o):IK_QJacobianSolver.cpp:function IK_QJacobianSolver::IK_QJacobianSolver() [clone .cold]: error: undefined reference to 'IK_QJacobian::~IK_QJacobian()'
../../lib/libbf_intern_iksolver.a(IK_QSegment.cpp.o):IK_QSegment.cpp:function IK_QElbowSegment::UpdateAngle(IK_QJacobian const&, Eigen::Matrix<double, 3, 1, 0, 3, 1>&, bool*): error: undefined reference to 'IK_QJacobian::AngleUpdate(int) const'
../../lib/libbf_intern_iksolver.a(IK_QSegment.cpp.o):IK_QSegment.cpp:function IK_QElbowSegment::UpdateAngle(IK_QJacobian const&, Eigen::Matrix<double, 3, 1, 0, 3, 1>&, bool*): error: undefined reference to 'IK_QJacobian::AngleUpdate(int) const'
../../lib/libbf_intern_iksolver.a(IK_QSegment.cpp.o):IK_QSegment.cpp:function IK_QTranslateSegment::UpdateAngle(IK_QJacobian const&, Eigen::Matrix<double, 3, 1, 0, 3, 1>&, bool*): error: undefined reference to 'IK_QJacobian::AngleUpdate(int) const'
../../lib/libbf_intern_iksolver.a(IK_QSegment.cpp.o):IK_QSegment.cpp:function IK_QSwingSegment::Lock(int, IK_QJacobian&, Eigen::Matrix<double, 3, 1, 0, 3, 1>&): error: undefined reference to 'IK_QJacobian::Lock(int, double)'
../../lib/libbf_intern_iksolver.a(IK_QSegment.cpp.o):IK_QSegment.cpp:function IK_QSphericalSegment::Lock(int, IK_QJacobian&, Eigen::Matrix<double, 3, 1, 0, 3, 1>&): error: undefined reference to 'IK_QJacobian::Lock(int, double)'
../../lib/libbf_intern_iksolver.a(IK_QSegment.cpp.o):IK_QSegment.cpp:function IK_QRevoluteSegment::UpdateAngle(IK_QJacobian const&, Eigen::Matrix<double, 3, 1, 0, 3, 1>&, bool*): error: undefined reference to 'IK_QJacobian::AngleUpdate(int) const'
../../lib/libbf_intern_iksolver.a(IK_QSegment.cpp.o):IK_QSegment.cpp:function IK_QRevoluteSegment::Lock(int, IK_QJacobian&, Eigen::Matrix<double, 3, 1, 0, 3, 1>&): error: undefined reference to 'IK_QJacobian::Lock(int, double)'
../../lib/libbf_intern_iksolver.a(IK_QSegment.cpp.o):IK_QSegment.cpp:function IK_QSwingSegment::Lock(int, IK_QJacobian&, Eigen::Matrix<double, 3, 1, 0, 3, 1>&): error: undefined reference to 'IK_QJacobian::Lock(int, double)'
../../lib/libbf_intern_iksolver.a(IK_QTask.cpp.o):IK_QTask.cpp:function IK_QOrientationTask::ComputeJacobian(IK_QJacobian&): error: undefined reference to 'IK_QJacobian::SetBetas(int, int, Eigen::Matrix<double, 3, 1, 0, 3, 1> const&)'
../../lib/libbf_intern_iksolver.a(IK_QTask.cpp.o):IK_QTask.cpp:function IK_QOrientationTask::ComputeJacobian(IK_QJacobian&): error: undefined reference to 'IK_QJacobian::SetDerivatives(int, int, Eigen::Matrix<double, 3, 1, 0, 3, 1> const&, double)'
../../lib/libbf_intern_iksolver.a(IK_QTask.cpp.o):IK_QTask.cpp:function IK_QOrientationTask::ComputeJacobian(IK_QJacobian&): error: undefined reference to 'IK_QJacobian::SetDerivatives(int, int, Eigen::Matrix<double, 3, 1, 0, 3, 1> const&, double)'
../../lib/libbf_intern_iksolver.a(IK_QTask.cpp.o):IK_QTask.cpp:function IK_QPositionTask::ComputeJacobian(IK_QJacobian&): error: undefined reference to 'IK_QJacobian::SetBetas(int, int, Eigen::Matrix<double, 3, 1, 0, 3, 1> const&)'
../../lib/libbf_intern_iksolver.a(IK_QTask.cpp.o):IK_QTask.cpp:function IK_QPositionTask::ComputeJacobian(IK_QJacobian&): error: undefined reference to 'IK_QJacobian::SetDerivatives(int, int, Eigen::Matrix<double, 3, 1, 0, 3, 1> const&, double)'
../../lib/libbf_intern_iksolver.a(IK_QTask.cpp.o):IK_QTask.cpp:function IK_QPositionTask::ComputeJacobian(IK_QJacobian&): error: undefined reference to 'IK_QJacobian::SetDerivatives(int, int, Eigen::Matrix<double, 3, 1, 0, 3, 1> const&, double)'
../../lib/libbf_intern_iksolver.a(IK_QTask.cpp.o):IK_QTask.cpp:function IK_QCenterOfMassTask::ComputeJacobian(IK_QJacobian&): error: undefined reference to 'IK_QJacobian::SetBetas(int, int, Eigen::Matrix<double, 3, 1, 0, 3, 1> const&)'
../../lib/libbf_intern_libmv.a(homography.cc.o):homography.cc:function libmv_homography2DFromCorrespondencesEuc: error: undefined reference to 'libmv::EstimateHomographyOptions::EstimateHomographyOptions()'
../../lib/libbf_intern_libmv.a(homography.cc.o):homography.cc:function libmv_homography2DFromCorrespondencesEuc: error: undefined reference to 'libmv::EstimateHomography2DFromCorrespondences(Eigen::Matrix<double, -1, -1, 0, -1, -1> const&, Eigen::Matrix<double, -1, -1, 0, -1, -1> const&, libmv::EstimateHomographyOptions const&, Eigen::Matrix<double, 3, 3, 0, 3, 3>*)'
../../lib/libbf_intern_libmv.a(initialize_reconstruction.cc.o):initialize_reconstruction.cc:function libmv::EuclideanReconstructTwoFrames(std::vector<libmv::Marker, Eigen::aligned_allocator<libmv::Marker> > const&, libmv::EuclideanReconstruction*): error: undefined reference to 'libmv::NormalizedEightPointSolver(Eigen::Matrix<double, -1, -1, 0, -1, -1> const&, Eigen::Matrix<double, -1, -1, 0, -1, -1> const&, Eigen::Matrix<double, 3, 3, 0, 3, 3>*)'
../../lib/libbf_intern_libmv.a(initialize_reconstruction.cc.o):initialize_reconstruction.cc:function libmv::EuclideanReconstructTwoFrames(std::vector<libmv::Marker, Eigen::aligned_allocator<libmv::Marker> > const&, libmv::EuclideanReconstruction*): error: undefined reference to 'libmv::FundamentalToEssential(Eigen::Matrix<double, 3, 3, 0, 3, 3> const&, Eigen::Matrix<double, 3, 3, 0, 3, 3>*)'
../../lib/libbf_intern_libmv.a(initialize_reconstruction.cc.o):initialize_reconstruction.cc:function libmv::EuclideanReconstructTwoFrames(std::vector<libmv::Marker, Eigen::aligned_allocator<libmv::Marker> > const&, libmv::EuclideanReconstruction*): error: undefined reference to 'libmv::MotionFromEssentialAndCorrespondence(Eigen::Matrix<double, 3, 3, 0, 3, 3> const&, Eigen::Matrix<double, 3, 3, 0, 3, 3> const&, Eigen::Matrix<double, 2, 1, 0, 2, 1> const&, Eigen::Matrix<double, 3, 3, 0, 3, 3> const&, Eigen::Matrix<double, 2, 1, 0, 2, 1> const&, Eigen::Matrix<double, 3, 3, 0, 3, 3>*, Eigen::Matrix<double, 3, 1, 0, 3, 1>*)'
../../lib/libbf_intern_libmv.a(initialize_reconstruction.cc.o):initialize_reconstruction.cc:function libmv::ProjectiveReconstructTwoFrames(std::vector<libmv::Marker, Eigen::aligned_allocator<libmv::Marker> > const&, libmv::ProjectiveReconstruction*): error: undefined reference to 'libmv::NormalizedEightPointSolver(Eigen::Matrix<double, -1, -1, 0, -1, -1> const&, Eigen::Matrix<double, -1, -1, 0, -1, -1> const&, Eigen::Matrix<double, 3, 3, 0, 3, 3>*)'
../../lib/libbf_intern_libmv.a(initialize_reconstruction.cc.o):initialize_reconstruction.cc:function libmv::ProjectiveReconstructTwoFrames(std::vector<libmv::Marker, Eigen::aligned_allocator<libmv::Marker> > const&, libmv::ProjectiveReconstruction*): error: undefined reference to 'libmv::ProjectionsFromFundamental(Eigen::Matrix<double, 3, 3, 0, 3, 3> const&, Eigen::Matrix<double, 3, 4, 0, 3, 4>*, Eigen::Matrix<double, 3, 4, 0, 3, 4>*)'
../../lib/libbf_intern_libmv.a(keyframe_selection.cc.o):keyframe_selection.cc:function libmv::SelectKeyframesBasedOnGRICAndVariance(libmv::Tracks const&, libmv::CameraIntrinsics const&, std::vector<int, Eigen::aligned_allocator<int> >&): error: undefined reference to 'libmv::EstimateHomographyOptions::EstimateHomographyOptions()'
../../lib/libbf_intern_libmv.a(keyframe_selection.cc.o):keyframe_selection.cc:function libmv::SelectKeyframesBasedOnGRICAndVariance(libmv::Tracks const&, libmv::CameraIntrinsics const&, std::vector<int, Eigen::aligned_allocator<int> >&): error: undefined reference to 'libmv::EstimateHomography2DFromCorrespondences(Eigen::Matrix<double, -1, -1, 0, -1, -1> const&, Eigen::Matrix<double, -1, -1, 0, -1, -1> const&, libmv::EstimateHomographyOptions const&, Eigen::Matrix<double, 3, 3, 0, 3, 3>*)'
../../lib/libbf_intern_libmv.a(keyframe_selection.cc.o):keyframe_selection.cc:function libmv::SelectKeyframesBasedOnGRICAndVariance(libmv::Tracks const&, libmv::CameraIntrinsics const&, std::vector<int, Eigen::aligned_allocator<int> >&): error: undefined reference to 'libmv::EstimateFundamentalOptions::EstimateFundamentalOptions()'
../../lib/libbf_intern_libmv.a(keyframe_selection.cc.o):keyframe_selection.cc:function libmv::SelectKeyframesBasedOnGRICAndVariance(libmv::Tracks const&, libmv::CameraIntrinsics const&, std::vector<int, Eigen::aligned_allocator<int> >&): error: undefined reference to 'libmv::EstimateFundamentalFromCorrespondences(Eigen::Matrix<double, -1, -1, 0, -1, -1> const&, Eigen::Matrix<double, -1, -1, 0, -1, -1> const&, libmv::EstimateFundamentalOptions const&, Eigen::Matrix<double, 3, 3, 0, 3, 3>*)'
../../lib/libbf_intern_libmv.a(keyframe_selection.cc.o):keyframe_selection.cc:function libmv::SelectKeyframesBasedOnGRICAndVariance(libmv::Tracks const&, libmv::CameraIntrinsics const&, std::vector<int, Eigen::aligned_allocator<int> >&): error: undefined reference to 'libmv::SymmetricGeometricDistance(Eigen::Matrix<double, 3, 3, 0, 3, 3> const&, Eigen::Matrix<double, 2, 1, 0, 2, 1> const&, Eigen::Matrix<double, 2, 1, 0, 2, 1> const&)'
../../lib/libbf_intern_libmv.a(keyframe_selection.cc.o):keyframe_selection.cc:function libmv::SelectKeyframesBasedOnGRICAndVariance(libmv::Tracks const&, libmv::CameraIntrinsics const&, std::vector<int, Eigen::aligned_allocator<int> >&): error: undefined reference to 'libmv::SymmetricEpipolarDistance(Eigen::Matrix<double, -1, -1, 0, -1, -1> const&, Eigen::Matrix<double, 2, 1, 0, 2, 1> const&, Eigen::Matrix<double, 2, 1, 0, 2, 1> const&)'
../../lib/libbf_intern_libmv.a(keyframe_selection.cc.o):keyframe_selection.cc:function libmv::SelectKeyframesBasedOnGRICAndVariance(libmv::Tracks const&, libmv::CameraIntrinsics const&, std::vector<int, Eigen::aligned_allocator<int> >&): error: undefined reference to 'libmv::FundamentalToEssential(Eigen::Matrix<double, 3, 3, 0, 3, 3> const&, Eigen::Matrix<double, 3, 3, 0, 3, 3>*)'
../../lib/libbf_intern_libmv.a(keyframe_selection.cc.o):keyframe_selection.cc:function libmv::SelectKeyframesBasedOnGRICAndVariance(libmv::Tracks const&, libmv::CameraIntrinsics const&, std::vector<int, Eigen::aligned_allocator<int> >&): error: undefined reference to 'libmv::MotionFromEssentialAndCorrespondence(Eigen::Matrix<double, 3, 3, 0, 3, 3> const&, Eigen::Matrix<double, 3, 3, 0, 3, 3> const&, Eigen::Matrix<double, 2, 1, 0, 2, 1> const&, Eigen::Matrix<double, 3, 3, 0, 3, 3> const&, Eigen::Matrix<double, 2, 1, 0, 2, 1> const&, Eigen::Matrix<double, 3, 3, 0, 3, 3>*, Eigen::Matrix<double, 3, 1, 0, 3, 1>*)'
../../lib/libbf_intern_libmv.a(resect.cc.o):resect.cc:function libmv::EuclideanResect(std::vector<libmv::Marker, Eigen::aligned_allocator<libmv::Marker> > const&, libmv::EuclideanReconstruction*, bool): error: undefined reference to 'libmv::euclidean_resection::EuclideanResection(Eigen::Matrix<double, 2, -1, 0, 2, -1> const&, Eigen::Matrix<double, 3, -1, 0, 3, -1> const&, Eigen::Matrix<double, 3, 3, 0, 3, 3>*, Eigen::Matrix<double, 3, 1, 0, 3, 1>*, libmv::euclidean_resection::ResectionMethod)'
../../lib/libbf_intern_libmv.a(track_region.cc.o):track_region.cc:function libmv::(anonymous namespace)::ComputeCanonicalHomography(double const*, double const*, int, int): error: undefined reference to 'libmv::Homography2DFromCorrespondencesLinear(Eigen::Matrix<double, -1, -1, 0, -1, -1> const&, Eigen::Matrix<double, -1, -1, 0, -1, -1> const&, Eigen::Matrix<double, 3, 3, 0, 3, 3>*, double)'
../../lib/libbf_intern_libmv.a(track_region.cc.o):track_region.cc:function libmv::(anonymous namespace)::HomographyWarp::HomographyWarp(double const*, double const*, double const*, double const*): error: undefined reference to 'libmv::Homography2DFromCorrespondencesLinear(Eigen::Matrix<double, -1, -1, 0, -1, -1> const&, Eigen::Matrix<double, -1, -1, 0, -1, -1> const&, Eigen::Matrix<double, 3, 3, 0, 3, 3>*, double)'
collect2: error: ld returned 1 exit status
source/creator/CMakeFiles/blender.dir/build.make:580: recipe for target 'bin/blender' failed
make[3]: *** [bin/blender] Error 1
CMakeFiles/Makefile2:8857: recipe for target 'source/creator/CMakeFiles/blender.dir/all' failed
make[2]: *** [source/creator/CMakeFiles/blender.dir/all] Error 2
Makefile:162: recipe for target 'all' failed
make[1]: *** [all] Error 2
GNUmakefile:340: recipe for target 'all' failed
make: *** [all] Error 2

I suspect that there is something wrong with my files of the form IK_xxx.cpp? Does anyone have advice on how I should proceed?

After checking the /lib folder it appears that there is not a subfolder with the name libbf_intern_iksolver anyways?

lib/linux_centos7_x86_64$ ls -a
.        fftw3     llvm         openimagedenoise  potrace  tbb
..       freetype  mesa         openimageio       pugixml  tiff
alembic  glew      nanovdb      openjpeg          python   usd
blosc    gmp       openal       opensubdiv        sdl      xml2
boost    haru      opencollada  openvdb           sndfile  xr_openxr_sdk
embree   jemalloc  opencolorio  osl               spnav    zlib
ffmpeg   jpeg      openexr      png               .svn     zstd
7
  • 2/3 I just checked again and the commands sudo apt install build-essential git subversion cmake libx11-dev libxxf86vm-dev libxcursor-dev libxi-dev libxrandr-dev libxinerama-dev libglew-dev and
    – akozi
    Commented Jun 19, 2021 at 23:52
  • 3/3 sudo apt install libwayland-dev wayland-protocols libegl-dev libxkbcommon-dev libdbus-1-dev both run without any error.
    – akozi
    Commented Jun 19, 2021 at 23:52
  • 4/3 As well, the command svn checkout https://svn.blender.org/svnroot/bf-blender/trunk/lib/linux_centos7_x86_64 also runs without error and I believe is the command that collects the prerequisites into the ~/blender-git/lib folder.
    – akozi
    Commented Jun 19, 2021 at 23:52
  • 1
    @cas The version of blender that's available by using sudo apt install blender is the 2.6xx version which has limitations/bugs in some of its physics engine such as not rendering smoke+fire. I was just following along with a tutorial and this was the first thing I noticed that my older version was unable to do compared to the 2.8xx version.
    – akozi
    Commented Jun 20, 2021 at 14:44
  • 2
    You must be using a very old version of ubuntu. According to packages.ubuntu.com Blender 2.83.5 has been in ubuntu since 20.10 (groovy), 20.04 LTS has Blender 2.82a, and even 18.04 LTS from over 3 years ago has Blender 2.79b. IMO if you really need a newer blender, you'd be better off just upgrading ubuntu - you'd get updates to the kernel, libc and lots of other stuff too (including the libs that blender depends upon). and not have to waste time figuring out how to compile stuff that's already packaged.
    – cas
    Commented Jun 20, 2021 at 15:12

2 Answers 2

1

The last error message says something isn't found when linking, but the build went fine otherwise. Strange.

Perhaps some library (the one mentioned in the error) is the wrong version? Or something is missing somewhere?

The blender package is open source, and pretty popular. There must be a package for your distribution, grab it's source package and dissect that one. Perhaps a distribution-local patch is needed, or you can use that as a starting point to build your own with the latest and greatest.

3
  • I'm admittedly not super knowledgeable in the open-source world, but I'll give this a look. Hopefully, it's an easy step that's missing and can be easily fixed. Thanks!
    – akozi
    Commented Jun 20, 2021 at 2:33
  • How to diagnose the missing element, @vonbrand?
    – ixtmixilix
    Commented Aug 12, 2023 at 3:18
  • @ixtmixilix One can run eg. ldd ./blender, to check for broken dependencies. linux.die.net/man/1/ldd Commented Aug 15, 2023 at 19:02
-2

Alternatively, sidestepping a lot of this work, you can download an already built version of Blender at: https://www.blender.org/download/ for Linux.

Then, uncompress the file from your download location and move the folder to usr/local:

$ cd ~/Downloads
$ tar -xf blender-2.93.0-linux-x64.tar.xz
$ sudo mv blender-2.93.0-stable+blender-v293-release /usr/local

Then run the executable blender from inside the /usr/local folder and once it's running, right-click the program and select create shortcut to be able to easily access blender in the future.

3
  • 2
    This obviously does not address the issue, but if someone is just an end-user such as myself, it may be useful to know that there is an easier download method that they may have missed.
    – akozi
    Commented Jun 20, 2021 at 2:37
  • This just isn’t an answer to the question.
    – ixtmixilix
    Commented Aug 12, 2023 at 3:36
  • @ixtmixilix since this was posted by the person who asked the question, that suggests it is a useful answer for the underlying problem, at least, so I think it can stay. Downvoting it may be appropriate, but I'd rather not outright delete it.
    – terdon
    Commented Aug 13, 2023 at 14:53

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .