当重新安装运行64位内核的32位tinycore64系统时,我遇到了同样的问题。
经过大量搜索,我发现为什么这些评论对他们俩都有意义。 。
“那太好了,但 - 至少在我的环境 - 它没有 出现工作装载机没有抱怨;它不是简单地跳过不到位岬匹配 库。可悲!” “这个很奇怪,你能描述一下事情是怎么失败的吗?还有, 也许会在ldd后面输出?” - 亚当古德
为什么此评论可能看起来是真的,但实际上是不正确的。
链接器将忽略它无法读取的库。
这个链接有点亮。 http://www.markusbe.com/2009/09/about-running-32-bit-programs-on-64-bit-ubuntu-and-shared-libraries/
更重要的是,您会发现ld.so手册页具有启发性。
事实证明,路径名可以使运行时链接程序ld.so选择的库作为加载库的区别。在我的64位Linux系统上,除了标准的目录名之外,我还有一些奇怪的目录名。例如/ LIB/x86_64的-Linux的GNU。我实际上认为我会通过将该路径中的库移动到/ lib64来进行试验。当我这样做时,猜猜发生了什么?突然我的64位应用程序(在这种情况下,brctl)没有工作,并抱怨“错误的ELF类”。你好...现在我们正在进行一些工作。
现在我不是100%确定,但关键似乎与rpath令牌扩展有关。 我怀疑$ {PLATFORM}扩展可能与它有关。名称x86_64必须是其中的一部分。在任何情况下,当我将我的64位库放在名为 x86_64-linux-gnu的库路径中时,我发现它们与lib64相同,因此它们优于32位的并且工作正常。
就你而言,你可能想为64位上的32位库做一些非常类似的事情。试试i386-linux-gnu。
在我的情况下我安装64位共享库到32位的userland
所以,我创建了以下路径:
mkdir /lib/x86_64-linux-gnu/
mkdir /usr/lib/x86_64-linux-gnu/
ln -s /lib/x86_64-linux-gnu /lib64
ln -s /usr/lib/x86_64-linux-gnu /usr/lib64
添加您的64位库到64路和32位库32位/ lib目录&/usr/lib路径。
然后将64位特定路径添加到ld.so.conf并使用ldconfig更新缓存现在您的32位& 64位应用程序将无缝运行。
你用什么来维护你的构建? makefile? – 2009-11-10 08:14:39
是的,Makefiles。 – struppi 2009-11-10 09:34:44