【发布时间】:2011-06-01 12:05:50
【问题描述】:
我有一个 linux 应用程序,它在链接器行上链接: libpython2.6.so
这最终会解析为 libpython.2.6.so.1.0
/usr/lib/libpython2.6.so -> libpython2.6.so.1
/usr/lib/libpython2.6.so.1 -> libpython2.6.so.1.0
其中嵌入了 SONAME,所以我坚持使用它链接到完整版本的名称。
g++ foo.cc /usr/lib/libpython2.6.so
ldd ./a.out | grep python
libpython2.6.so.1.0 => /usr/lib/libpython2.6.so.1.0 (0x00007fd36f7ab000)
这意味着如果有 libpython2.6.so.1.1,我的应用程序最终会崩溃。无论如何强制我的应用程序使用通用名称 libpython2.6,而不是 libpython2.6.so.1.0?
我使用如此小的一组 python API,我认为我应该安全地链接到更通用的库版本名称。
【问题讨论】:
-
您使用的 C 模块有哪些?
-
除了解释器之外,我的扩展是唯一用 C 编写的部分。我唯一的调用是初始化我的函数,为我的函数获取字符串列表参数,并返回字符串值。
-
@Juan 你有想过这个吗?
-
@copumpkin,我好久没看这个了。这个问题看起来很相关,但没有答案,stackoverflow.com/questions/18467163/…。
标签: linux elf dynamic-linking