gpt4 book ai didi

macos - Mac OSX 10.6.7 上的链接错误

转载 作者:行者123 更新时间:2023-12-04 10:44:51 24 4
gpt4 key购买 nike

我正在看:

ld: in objs/AttributeValueTest.o, can't link with a main executable for architecture x86_64

构建只有 1 个 .h 和 1 个 .cpp 文件的非常简单的程序时。

编译行是:
g++ -g -I./ -I/usr/local/include -o objs/AttributeValueTest.o tp_datastruct/tests/AttributeValueTest.cpp -L/usr/local/lib -lavrocpp -lcppunit -lm 
g++ -g -I./ -I/usr/local/include -o AttributeValueTest objs/AttributeValueTest.o -L/usr/local/lib -lavrocpp -lcppunit -lm

我试图指定 -arch x86_64、-arch i386 和 -m32,但没有任何效果(我遇到了其他错误,它提示 libcppunit 的格式不正确)。

任何想法/指针/建议?

谢谢!

很奇怪。我做了一些挖掘,并在某处看到 AttributeValueTest.o 可能已经是一个可执行文件。我在那个 AttributeValueTest.o 上做了一个"file",果然,它是一个随时可用的可执行文件。我修改了我的 makefile 以将该 .o 重命名为 AttributeValueTest,我可以很高兴地运行它。此外,可执行文件带有一个“.dSYM”目录,我可以毫无问题地删除它......我不明白发生了什么,但我现在可以运行我的可执行文件......

最佳答案

您忘记指定 -c g++ 的选项将源代码编译成目标文件。所以它被编译并链接到可执行文件中。然后你试图将可执行文件链接到可执行文件,但失败了。来自 gcc的手册页:

-c Compile or assemble the source files, but do not link. The linking stage simply is not done. The ultimate output is in the form of an object file for each source file.

By default, the object file name for a source file is made by r> eplacing the suffix .c, .i, .s, etc., with .o. Unrecognized input files, not requiring compilation or assembly, are ignored.

关于macos - Mac OSX 10.6.7 上的链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6309773/

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