我们已经在 Solaris 10 上成功使用 gcc 进行编译。现在我们在 Solaris 11 (sol11_64) 上移植到 64 位。我们使用内部开发的名为 MSP 的库,并在编译期间使用 -wl,rpath(等效于 -R... 也尝试使用 -R)来指定运行时库的位置。在 sol10 上,LDD 的输出显示找到了 2 个 MSP 库中的 2 个。在 sol11_64 上,LDD 输出中现在显示了 3 个库,但无法找到新的库,即使它与其他库位于同一位置。如果我将该位置添加到我的 LD_LIBRARY_PATH,则 LDD 会拾取它。我们不希望使用 LD_LIBRARY_PATH 作为永久解决方案。
sol10 LDD 输出:
libmsp.so => /opt/msp/lib/fiorano/libmsp.so
libfmq-crtl.so => /opt/msp/lib/fiorano/vendor-files/lib/libfmq-crtl.so
sol11_64 LDD 输出:
libmsp.so => /opt/msp/lib/fiorano/libmsp.so
libfmq-crtl.so => /opt/msp/lib/fiorano/vendor-files/lib/libfmq-crtl.so
libfmq-crtl-ssl.so => (file not found)
sol11_64 LDD 输出,路径在 LD_LIBRARY_PATH:
libmsp.so => /opt/msp/lib/fiorano/libmsp.so
libfmq-crtl.so => /opt/msp/lib/fiorano/vendor-files/lib/libfmq-crtl.so
libfmq-crtl-ssl.so => /opt/msp/lib/fiorano/vendor-files/lib/libfmq-crtl-ssl.so
我确实检查了权限:
-rwxr-xr-x 1 root root 2.0M Dec 18 17:49 libfmq-crtl-ssl.so*
-rwxr-xr-x 1 root root 2.0M Dec 18 17:49 libfmq-crtl.so*
由于这个库突然成为对 sol11_64 的新依赖,我需要将它添加到我们的 makefile 中的其他位置,特别是我们的 LIBS 变量,该变量在链接期间与运行时库路径一起传入。我认为这部分告诉它实际寻找哪些库。
前:
后:
生成文件目标: