由于各种原因主要与惯性有关,我们没有- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
目标。
相反,我们将大型C ++代码库直接构建到类似FHS的树中;
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
我们最近将一些第三方库切换为动态链接,因此我们将一些make install
库推送到output/
bin/
lib/
etc/
...
。
现在,我们习惯于从.so
启动我们的可执行文件,但由于加载程序不搜索我们的lib/
目录,因此不再有效。
bin/
可以解决这个问题,但我们不希望在每次单个可执行调用之前都提供它,并且我们不想将它粘在shell的环境中,因为我们通常会在不同的构建树在同一个shell中。
我们考虑在生成的ELF中添加lib/
条目,但相对路径通常是针对LD_LIBRARY_PATH
解析的,而不是可执行文件的dirname。
有没有办法轻推加载器查找rpath
.so libs?
基本上,我知道有很多方法可以改变我们的习惯来使这项工作(可能应该),但我们不想在这一点上,所以我们可以强迫Linux这样的加载器来做我们想做的事情?谢谢!
答案 0 :(得分:2)
是的,可以使用rpath
和${ORIGIN}
宏,ld.so
在运行时可以识别它。
来自man ld.so
:
ld.so understands certain strings in an rpath specification
(DT_RPATH or DT_RUNPATH); those strings are substituted as follows
$ORIGIN (or equivalently ${ORIGIN})
This expands to the directory containing the application executable.
有更多变量可供选择。您不需要强制加载任何东西。它有你的功能。 :)