1

我最近一直在将 python 脚本“编译”成二进制形式,用于内部分发。我正在使用实用程序 cx_freeze,它在默认状态下会创建一个目录,其中包含主要的二进制可执行文件以及一堆二进制 *.so 文件。我的理解是 .so 文件是库,它们显然是使可执行二进制文件运行所必需的,但我的问题是如何将东西链接在一起,这样它们就不必都在同一个目录中?我是否必须在“编译时”确定?是否有一个通用路径变量可供可执行文件查找它可能需要的库,或者该路径是否在可执行文件本身的某处说明?

提前致谢!

4

1 回答 1

4

动态链接器在多个位置搜索共享对象,如linuxOSX的动态链接器手册页中所述:

  1. DT_RPATH存储在 ELF 文件的二进制文件中的属性。
  2. LD_LIBRARY_PATH如果可执行文件不是 set-user-id/set-group-id,则为环境变量。
  3. DT_RUNPATH存储在 ELF 文件的二进制文件中的属性。
  4. /etc/ld.so.cache用作动态链接器的库路径缓存的文件。
  5. 最后,默认目录/lib/usr/lib.
于 2012-03-03T00:59:21.540 回答