我在 linux 中有一个案例,其中 gcc 和 ld 干净地构建东西,但是在运行时我得到一个未定义的符号(对于 libxerces-c.so.28 中的某些东西),由我自己的一个共享库报告,在运行我的程序时.
第一个假设是缓存坏了,最近安装了 xerces 或类似的东西,所以我运行了 ldconfig。没修。但是将 /usr/lib 添加到 ld.so.conf 然后运行 ldconfig 确实可以解决它。
我的理解是/lib、/usr/lib,也许运行时动态链接器总是搜索一两个其他位置。
??
(唯一不寻常的是这是一个使用 jni 访问应用程序共享库的 java 程序。再说一次,如果这是合理的,我应该在这个应用程序的过去 N 年的任何时候看到这个错误。)