# Blender 2.8 cannot find libmvec.so.1

I am running CentOS 7 and I was trying to test the latest builds of Blender. However, every time I try running it, I keep getting the following error:

error while loading shared libraries: libmvec.so.1: cannot open shared object file: No such file or directory

Looking online, I found out the libmvec is vector math library that was added in Glibc 2.22. Since the newest Glibc version in CentOS is 2.17, it made sense that I wouldn't have it. Therefore, I compiled a newer version of Glibc, installed it in a location different from the main one, and added the new path to the LD_LIBRARY_PATH environment variable. However, I still get the same error. It is as if Blender cannot see the new version I installed.

Is there a way I can force Blender to use the libraries from this new Glibc version? I am trying to avoid having to change distros as I have other programs that rely heavily on CentOS.

• You could try to add a symlink to the new library and place it in the directory where blender is actually looking. Just a guess. – michaelh Oct 20 '18 at 10:50
• I symlinked it in /usr/lib, /usr/lib64 and even in Blender's own lib directory and it still didn't work. I am not sure if Blender is looking for it in a different folder. – Abdelrahman Said Oct 20 '18 at 11:40

There is a debug tool on linux: "strace"

In blender directory:

strace ./blender-softwaregl --background

or

strace ./blender --background

You can watch the system calls, e.g. the "open" calls too. It will show the path in "open" calls.

example:

user\$ strace ./blender-softwaregl --background
..
..
open("/lib/libmvec.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/usr/lib/tls/x86_64/libmvec.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib/tls/x86_64", 0x7ffe99686660) = -1 ENOENT (No such file or directory)
open("/usr/lib/tls/libmvec.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib/tls", 0x7ffe99686660)    = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64/libmvec.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64", 0x7ffe99686660) = -1 ENOENT (No such file or directory)
open("/usr/lib/libmvec.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
writev(2, [{"./blender", 9}, {": ", 2}, {"error while loading shared libra"..., 36}, {": ", 2}, {"libmvec.so.1", 12}, {": ", 2}, {"cannot open shared object file", 30}, {": ", 2}, {"No such file or directory", 25}, {"\n", 1}], 10./blender: error while loading shared libraries: libmvec.so.1: cannot open shared object file: No such file or directory
) = 121
exit_group(127)                         = ?
+++ exited with 127 +++


-- UPDATE2 --

You can see the paths where "blender" tries to open the libmvec.so.1 file. Pick a path and you could try to add a symlink to the compiled glibc directory.

I don't have a CentOS 7 box, but I have an old Ubuntu machine

-- The whole operation on Ubuntu --

Compile glibc-2.24 on Ubuntu 14.04:

cd ~
wget https://ftp.gnu.org/gnu/libc/glibc-2.24.tar.gz
tar -xvzf ./glibc-2.24.tar.gz
cd glibc-2.24
mkdir _build
cd _build


Your kernel version on CentOs may be different. My kernel version is 3.13. You can get your kernel version by uname -a command on linux.

../configure --enable-kernel=3.13 --prefix=/usr
make


If there is no error on compile, you are done.

cd lib
ln -s ~/glibc-2.24/_build/mathvec/libmvec.so ./libmvec.so.1
ln -s ~/glibc-2.24/_build/math/libm.so ./libm.so.6


GO

Navigate to blender's main folder.

./blender-softwaregl --background --python-console


gui version:

./blender


It works for me on Ubuntu 14.04

• Okay, so after I do this, then what? – Anson Savage Jan 1 at 6:45
• I couldn't add a comment on the question because I don't have enough reputation yet. I have completed my answer. – z5ottu Jan 3 at 13:47
• Type uname -a to show kernel version. – Nick Jan 15 at 3:10
• Updated.. uname -a for kernel version of course. Thank you Nick. – z5ottu Jan 20 at 19:40
• I am having the same situation and I followed the instructions on the compile library and now I got stuck after I try to start blender and I get this: ./blender: /lib64/libstdc++.so.6: version CXXABI_1.3.8' not found (required by ./lib/libGL.so.1) ./blender: /lib64/libstdc++.so.6: versionGLIBCXX_3.4.21' not found (required by ./lib/libGL.so.1) ./blender: /lib64/libstdc++.so.6: version GLIBCXX_3.4.20' not found (required by ./lib/libGL.so.1) ./blender: /lib64/libstdc++.so.6: versionCXXABI_1.3.9' not found (required by ./lib/libGL.so.1) Any tips? Thanks. – Michel Martins Zigaib Mar 23 at 15:13

## protected by cegatonMay 9 at 19:17

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).