gpt4 book ai didi

c - 如何解释 make 命令生成的这个输出?

转载 作者:行者123 更新时间:2023-12-04 05:31:05 25 4
gpt4 key购买 nike

在运行 make 命令时,我得到以下输出,

g++ -DUNIX -Wall -g -I../include -I. main.o hfpage.o hfp_driver.o                      test_driver.o db.o new_error.o page.o system_defs.o buf.o -o hfpage 

/usr/bin/ld: Warning: size of symbol `error_string_table::error_string_table(Status, char const**)' changed from 18 in db.o to 34 in buf.o
/usr/bin/ld: i386:x86-64 architecture of input file `buf.o' is incompatible with i386 output
collect2: ld returned 1 exit status
make: *** [hfpage] Error 1

当我尝试使用 ./hfpage.o 运行时,此文件会生成 hfpage.o我收到错误消息 bash: ./hfpage.o: cannot execute binary file .

我的系统有问题吗?

最佳答案

好的,首先,错误消息显示 buf.o是为另一种架构编译的,在 64 位机器上可能是 32 位。

跑不起来的原因./hprof.ohprof.o是一个二进制对象,而不是一个可执行文件。如果这个编译已经完成,因为你没有 -o标志,可执行文件将被命名为 a.out由于历史原因,这是 UNIX 可执行文件的默认名称。

您的问题可能出现在 make 文件的较早步骤中。基本上,你应该有几行像

main.o: 
g++ -DUNIX -Wall -g -I../include -I. -c main.C

然后是最后一行
main:
g++ -DUNIX -Wall -g -o main main.o hfpage.o hfp_driver.o

架构消息建议您编译 buf.o使用不同的编译器或编译器标志。

关于c - 如何解释 make 命令生成的这个输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12613598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com