I recently compiled and installed from source a program known as Miredo, for IPv6 connectivity. I successfully compiled and generated the necessary binaries to run the program. However, upon execution, they complained of an missing shared object file (libtun6.so).
I spent hours googling a solution to no avail. I eventually gave up and shut down the system for the night. Upon booting up again the next day, the program executed without any problems.
My question is this: Why would it require a reboot to work? No part of the compilation required messing with the kernel to my knowledge. I ask this because I’d like to understand my system a bit better.
>
> I recently compiled and installed from source a program known as Miredo,
> for IPv6 connectivity. I successfully compiled and generated the
> necessary binaries to run the program. However, upon execution, they
> complained of an missing shared object file (libtun6.so).
> I spent hours googling a solution to no avail. I eventually gave up and
> shut down the system for the night. Upon booting up again the next day,
> the program executed without any problems.
>
> My question is this: Why would it require a reboot to work? No part of
> the compilation required messing with the kernel to my knowledge. I ask
> this because I’d like to understand my system a bit better.
>
>
If you installed a new library during your travels, you need to run ldconfig
to rescan the libraries. Rather like a giant ‘hash table’ which lets linux
link libraries faster.
After installing, or doing anything which changes/add/removes a library…
(as root)
ldconfig
The libraries are rescanned on a boot… which is why it worked after the
reboot.
Similarly, if you install/add/change/remove kernel modules, you need to run
‘depmod -a’ to update indexes… (as an example)