Makefile问题(体系结构x86_64的未定义符号:“ _ main”,引用自:主可执行文件的隐式入口/启动)

时间:2019-03-18 17:43:48

标签: c++ makefile

我正在尝试使用Makefile来为c ++(霍夫曼压缩)编译我的项目,但我不断收到此编译器错误:

Undefined symbols for architecture x86_64: "_main", referenced from: implicit entry/start for main executable ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [huff] Error 1

由于这是我的任务,所以我认为我无法将所有代码都置于联机状态,但是我应该能够包含我的Makefile,并且我还将包含我的主要cpp文件,而且目前还很准

all:    huff

huff:   HuffmanCompression.o PriorityQueue.o Node.o TreeNode.o FrequencyCounter.o BitStream.o HuffmanTree.o
    g++ -Wall -std=c++11 HuffmanCompression.o PriorityQueue.o Node.o TreeNode.o FrequencyCounter.o BitStream.o HuffmanTree.o -o huff

HuffmanCompression.o:   HuffmanCompression.cpp PriorityQueue.o HuffmanTree.o
    g++ -c HuffmanCompression.cpp

PriorityQueue.o:    PriorityQueue.cpp PriorityQueue.h Node.o
    g++ -c PriorityQueue.cpp

Node.o: Node.cpp Node.h
    g++ -c Node.cpp

TreeNode.o: TreeNode.cpp TreeNode.h
    g++ -c TreeNode.cpp

FrequencyCounter.o: FrequencyCounter.cpp FrequencyCounter.h
    g++ -c FrequencyCounter.cpp

BitStream.o:    BitStream.cpp BitStream.h FrequencyCounter.o
    g++ -c BitStream.cpp

HuffmanTree.o: HuffmanTree.cpp HuffmanTree.h TreeNode.o
    g++ -c HuffmanTree.cpp

clean:  
    rm -f huff *.o

这是主要的cpp:

#include <list>

#include "HuffmanTree.h"
#include "PriorityQueue.h"

class HuffmanCompression {

    int main(int argc, char** argv) {
        //std::list<FrequencyCounter> mylist;

        return 0;
    }
};    

1 个答案:

答案 0 :(得分:0)

有两个单独的错误。

首先,您忘记将main.cpp添加到生成文件中。

第二,您的main.cpp不包含名为main的全局函数。名为main的类成员函数不符合条件。您需要在具有外部链接的全局名称空间中使用名为main的函数。