代码之家  ›  专栏  ›  技术社区  ›  DevSolar

如何强制Boost使用rpath?

  •  8
  • DevSolar  · 技术社区  · 14 年前

    我必须在“普通”目录树之外构建Boost(即。, /custom/dir /usr ),这不是什么大问题:只是通过 --prefix=/custom/path ./runscript.sh / ./bjam ,就这样。

    或者我是这么想的。

    ./bootstrap.sh / --prefix 路径没有添加到Boost libs的库搜索路径中,即no -Wl,-rpath 已应用。这意味着依赖于其他Boost库的Boost库在运行时找不到它们。

    /custom/path ./configure 舞台因为 libboost_filesystem.so libboost_system.so , 尽管 -Wl,-rpath=/custom/path/boost/lib 到我自己的编译器行(即Boost libs的正确路径),我仔细检查了一下 libboost公司_system.so 是的)。

    现在,为了避免像设置 LD_LIBRARY_PATH ,我希望以某种方式构建Boost,以便所有Boost库都能为编译到其中的其他Boost库提供正确的搜索路径。但是,我找不到合适的程序。有人能帮我吗?

    2 回复  |  直到 14 年前
        1
  •  11
  •   Joseph Van Riper    6 年前

    我最近在另一个项目中需要这样做,尽管我需要使用$ORIGIN来创建相对于boost共享对象位置的路径。

    ./b2 hardcode-dll-paths=true dll-path="'\$ORIGIN/../lib'" --prefix=$MY_PREFIX install
    

    找出字符的神奇集合以使$ORIGIN正确地放置在共享对象中需要一些尝试和错误,因此我希望在这里写下答案可以帮助其他人避免在这个问题上犯错误。

        2
  •  6
  •   GrafikRobot    6 年前

    您可以添加编译器;在生成过程中,从命令行将选项链接到:

    bjam hard-code-dll-path=true dll-path=/custom/path
    

    B2 docs