I have this compiled executable:


I have moved it to other computer, but there the dynamic dependencies are not satisfied:

ldd ./run.x
        libx.1.so => not found

However on the second computer there exists newer version of the same library (but the Linux kernel is the same along with other resources). My question is: is it possible to force it to link other shared object:

ldd ./run.x
        libx.1.so => libx.2.so

Without making symbolic link libx.1.so => libx2.so, and without recompiling the whole application (I have good reason not to do it).

1 Answer 1


You could patch the link name in the binary, but that would be a bad idea. If the library changed its version (technically, its soname), that means that it changed in a backwards-incompatible manner, so there are no guarantees that your executable would work with the new library.

To fix this, you need to either copy the old library, or recompile your executable.

You must log in to answer this question.

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