覆盖库文件会导致分段错误

jac*_*hab 3 linux shared-libraries

在我运行可执行文件后,我用新版本覆盖其.so库文件,这会导致可执行文件因为分段错误而死亡.我以为只有在加载ELF文件时才访问库文件.我错了吗?

caf*_*caf 11

库文件在加载时会被映射到内存中(通常,在加载可执行文件时 - 但也可以在以后加载库dlopen()).然后根据需要加载文件的实际页面.

覆盖文件将导致映射文件中的页面MAP_SHARED(其中大部分)使用新内容进行更新.这是导致分段错误的原因.不要这样做 - 而是删除现有的.so文件,然后在其位置写入新文件.