尝试使用devtoolset-11在基于Fortran/C makefile的项目中生成大型静态库时,"ar"步骤失败,并显示:ar:第一个/对象/按/字母/顺序。o:无法识别文件格式
我正在使用基于Red Hat Enterprise Linux Server 7.9版(Maipo)的Podman映像中包含的devtoolset-11安装。"源代码/opt/rh/开发工具集-11/启用"和"哪个ar"打印"/opt/rh/开发工具集-11/根目录/usr/bin/ar "。" ar--版本"是" GNU ar版本2.36.1 - 1.el7.1 "。
- 有趣的是,如果我重命名devtoolset的"ar"并创建一个链接"ln-s/usr/bin/ar/opt/rh/devtoolset-11/root/usr/bin/ar",那么构建将顺利完成,并生成库!**
我也尝试过使用devtoolset的"ar"来手动生成一个使用其中一个对象文件的库,这也可以工作,所以看起来对象实际上并不是使用与"ar"不兼容的ELF格式编译的。我也尝试过使用devtoolset-11中的gcc/gfortran构建测试程序,并使用devtoolset的"ar"手动创建库,这也可以工作。它只在我的makefile项目的上下文中失败。
对于这里可能发生的事情以及为什么我可以使用系统默认值"ar"完成构建,而不能使用devtoolset-11中的默认值,您有什么想法吗?
1条答案
按热度按时间1szpjjfi1#
我发现这个问题是由两个不同版本的“ar”的可用命令行标志的差异引起的。构建系统使用的是标志“rul”,而“l”没有作为系统的“ar”的选项列出,而在devtoolset-11中包含的一个中,它被列为“[l ] -指定此库的依赖项”。语法上的这种差异会导致有关无法识别的文件格式的消息。