第一天
我遇到了一些错误,构建失败了,说存在一些冲突。因此,我相信无法制作 .o 文件,然后在链接过程中导致致命错误,有人有一步一步的故障排除提示吗?
我已经成功地在 Red Hat 6 的全新安装上做到了这一点,所以我怀疑有人更新了内核但没有更新内核库。需要一些关于我应该在哪里检查的提示
我输入 rpm -qa
并显示有 2 个内核,尝试启动到旧内核并编译 LiS,但没有帮助。
我将我的问题分解如下:
- 如何检查内核库与内核版本是否匹配?
想法:dlevel、内核、gcc、glib、glibc ... - 是否有解决构建问题的一般步骤,例如检查清单?所以你可以一项一项地勾选。 LiS 安装确实提供了几个库的最低级别要求,我确信我满足了所有这些要求,现在我怀疑我已经过了补丁。
- 我可以只降低文件版本吗?所以我只是让每个库都满足要求?并且100%兼容。
第 2 天的进展
根据@schaiba 的一些提示,我研究了如何在编译过程中进行日志记录。
而在打入构建包后,跟踪到第二个文件夹中的构建strconf,在cc编译中添加--verbose,得到以下消息:
忽略冲突的库 /usr/lib64/libc.so
,它是一个小文件,所以我尝试用vi打开它,因此发现它是一个文本文件,其中有类似的语句OUTPUT FORMAT (elf32-i386)
,这对我来说显然是不正确的,因为 lib64 应该是 x86_64 。
然后,我决定通过以下方式检查 libc.so 来自哪里:
rpm -qf libc.so
从中发现它在 glibc-devel-....,我得到了一个 Red hat 6.4 存储库,正在做
yum update glibc-devel
然后,调皮的 libc.so 就变成了OUTPUT FORMAT(elf64-x86-64)
strconf 模块编译。我完成了构建。
但是,我现在还有其他问题。我仍然收到忽略冲突 libc.so 警告,并且我构建的 LiS 实际上被另一个应用程序使用,并且该应用程序似乎存在一些问题。
有什么建议 ?
对于另一项关于互联网的研究,LiS包是32位原生的,因此我猜它可能有部分代码需要在32位下编译,因此出现了2个新问题,
如何修改构建文件以便它可以使用相同库的两个版本?
有没有办法让2个版本的devel在linux系统上共存?更准确地说,是 /usr/lib64/libc.so 的 2 个版本
答案1
这是一个盲目的尝试,但由于 LiS 看起来它涉及一个内核模块(http://www.gcom.com/home/linux/lis/index.html),您可能需要内核开发包。
所以尝试以 root 身份运行它:
yum -y install kernel-devel kernel-headers
现在会建吗?