我必须在"通常"目录树之外构建Boost(即/custom/dir代替/usr),这不是一个很大的问题:只需传递--prefix=/custom/path给./runscript.sh/ ./bjam,然后就可以了.
或者我想.
问题是一些Boost库彼此依赖,并且 - 使用通过./bootstrap.sh/ 的默认构建过程./bjam- 似乎--prefix路径没有添加到Boost库的库搜索路径,即没有-Wl,-rpath应用.这意味着依赖于其他Boost库的Boost库在运行时无法找到它们.
我的应用程序 - 链接那些/custom/pathBoost库 - 已经在./configure阶段失败,因为libboost_filesystem.so无法找到libboost_system.so,即使我传递-Wl,-rpath=/custom/path/boost/lib给我自己的编译器行(即Boost库的正确路径,我仔细检查了libboost_system.so那里).
现在,为了避免像设置这样的繁琐方法LD_LIBRARY_PATH,我想以某种方式构建Boost,以便所有Boost库都具有编译到其中的其他Boost库的正确搜索路径.但是,我无法找到适当的程序.有谁能够帮我?
您可以在命令行构建期间添加编译器和链接选项:
bjam hard-code-dll-path=true dll-path=/custom/path
Run Code Online (Sandbox Code Playgroud)
Boost Build文档中有一个FAQ项目(参见B2文档).
我最近需要为另一个项目执行此操作,尽管我需要使用$ ORIGIN来创建相对于boost的共享对象位置的路径.
这需要在bash命令行上执行以下操作:
./b2 hardcode-dll-paths=true dll-path="'\$ORIGIN/../lib'" --prefix=$MY_PREFIX install
Run Code Online (Sandbox Code Playgroud)
找出神奇的字符集合以使$ ORIGIN正确放置在共享对象中需要一些试验和错误,所以我希望在这里写答案有助于其他人避免摸索这一点.
| 归档时间: |
|
| 查看次数: |
2726 次 |
| 最近记录: |