I’m looking to solve this error when compiling my program:
make: *** No rule to make target '/usr/lib64/libpthread.so', needed by 'src/specmicp_common/libspecmicp_common.so'. Stop.
I have recently updated my desktop from fedora 34 to 35. It seems that I am missing the synbolic link creating “generic versions” (i.e “.so” → “.so.x.y.z”) of the libraries:
$ ls /usr/lib64/libpthread.
Is it normal ? Was a dnf script not got triggered, or am I missing a pakage ? I have updated glibc/glibc-devel but it didn’t change the problem, and I didn’t saw any errors.
did something change in the packaging process ?
I feel like I’m missing something obvious and I would appreciate any help.
Your Makefile should not be depending on
libpthread.so directly, but pass
gcc and let it determine what to link.
Everything is folded into glibc:
The makefile was generating by CMake. I do not pass intentionally -pthread to gcc or make the dependence upon
libpthread.so , I’m not even sure where the requirement is from (I’m guessing openmp).
I’m sure regenerating the build from scratch might solve the issue, but I’m still puzzled why these files do not exist anymore. And if there is a better solution to the problem, in case it’s not the only file.
How about creating symlink
sudo ln -s /usr/lib/lib64/libpthread.so.0 /usr/lib/lib64/libpthread.so?
Yes that would work on the short term, but it seems that it’s something that should be done by the package manager/OS not individually
The explanation is in the release notes in the link; those files are not needed any more. You should re-generate your build after doing a system upgrade.
You’re right, it’s even the first entry, I’m not sure how I missed it ! Thank you, I will try to find what’s wrong in my cmake files, and why it’s explicitly taken into account.
Thanks for your help !