生成错误:架构x86_64的未定义符号

时间:2015-11-02 23:18:48

标签: c++ macos makefile x86-64

我是一个非常新手的程序员(因为我只在需要时编码),但我主要在电视上工作。我一直在尝试编译我下载(bmdtools)的工具,以便在OSX上进行编译,因为我们(无论出于何种原因)不允许使用Linux机器。

所以,在安装完所有库并链接我需要的东西之后,我跑了#34; make"并收到错误消息:

ld: symbol(s) not found for architecture x86_64

然后我读到添加-stdlib = libc ++会解决任何被反映的问题。这次它完成了,创建了应该创建的所有三个文件。但是,这三个文件完全是空白的。零字节。

非常感谢任何帮助或见解。谢谢!

1 个答案:

答案 0 :(得分:3)

  

ld:找不到架构x86_64的符号

我一直认为这个消息令人困惑,因为人们倾向于专注于"对于架构x86_64"消息的一部分。这里的实际问题是找不到符号。所以,实际上,这是什么意思?

如果我们创建一个类并声明一个函数,但是没有实现该函数的主体,则会出现相同的错误,因为编译/链接器进程已被告知函数存在,但是无法找到它。

未找到achitecture x86_4 的符号下方的行通常会识别未找到的内容。

让我们看一个例子: -

class PGGui
{
   public:
       PGGui::PGGui(QObject*)
       {
           DoSomeStuff();
       }

    private:
       DoSomeStuff();
};

enter image description here

这告诉我们,类PGGui声明了一个函数DoStuff,它是从PGGui构造函数引用的:PGGui::PGGui(QObject*),但函数体可以'找到了。

正如您所看到的,这里只是查看错误消息的第一行并不是很有帮助。您需要阅读错误的其余部分以查看缺少的内容,这可能是函数的主体,或包含库或其他对象。

如果您首先尝试了解错误消息,而不是简单地在网络上搜索错误并希望其他人的问题和解决方案与您自己的相匹配,那么您将更容易发现软件开发。