我正在尝试将基于 libtool 的包合并到我自己的项目中,可能是以非标准方式。这是我的目标:
构建外部项目:
./configure --prefix=$HOME/blah --etcetera && make && make install
在运行时构建我自己的项目,该项目依赖于外部项目的共享库和可执行文件:
gcc -I$HOME/blah/include -L$HOME/blah/lib -o $HOME/blah/bin/program
将所有内容打包成一个“本地化”压缩包......也就是说,虽然我在
$HOME/blah
构建主机上拥有所有内容,但我希望能够将压缩包解压缩到任何任意目录(在其他主机上),而不必与我的环境混为一谈。目的是允许我的项目的多个版本并排共存,而不会出现任何令人讨厌的“异花授粉”。
我知道我可以-rpath '$ORIGIN/../lib'
在我的项目中使用它来确保始终在运行时加载正确的共享库。但是,似乎 libtool 坚持-rpath
根据 的确切路径分配自己的设置$HOME/blah/lib
,如果我碰巧将所有内容解压缩到不同的目录(例如,$HOME/blah.2011-06-02
),则会中断。
有没有办法绕过这个限制?我看到debian 和 libtool 人员之间就该主题进行了相当冗长的 rpath 讨论,但除了“我们不同意”之外,它有些陈旧且不确定。