我在不同的位置有两个c ++文件
在hello.cc中我们有一个include for messages.h
所以我使用下面的命令编译hello.cc是成功的 g ++ -c -I / home / testing / src / msg hello.cc(这在/ home / testing / src / impl /中生成了一个hello.o文件)
现在我使用命令编译了messages.cc g ++ -c messages.cc(这在/ home / testing / src / msg /中生成了一个messages.o文件)
现在我想要的是使用hello.o制作和执行文件
使用以下命令
g ++ -o hello hello.o
这是我得到的错误
Undefined first referenced symbol in file message hello.o ld: fatal: Symbol referencing errors. No output written to hello collect2: ld returned 1 exit status
请帮我解决这个问题
答案 0 :(得分:4)
您需要加载所有目标文件:
g++ -o hello hello.o path/to/messages.o
因为链接器没有自动知道在哪里找到符号的方法。
答案 1 :(得分:1)
命令应为,
g++ hello.o message.o -o hello // give the proper paths
要创建主可执行文件,您必须包含所有需要的目标文件及其正确的路径。否则会导致链接器错误