使用g ++在不同文件夹中使用.o文件创建可执行文件的问题

时间:2011-06-03 11:22:43

标签: c++

我在不同的位置有两个c ++文件

  1. hello.cc in /home/testing/src/impl/hello.cc
  2. messages.cc in /home/testing/src/msg/messages.cc
  3. 在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
    

    请帮我解决这个问题

2 个答案:

答案 0 :(得分:4)

您需要加载所有目标文件

g++ -o hello hello.o path/to/messages.o

因为链接器没有自动知道在哪里找到符号的方法。

答案 1 :(得分:1)

命令应为,

g++ hello.o message.o -o hello  // give the proper paths

要创建主可执行文件,您必须包含所有需要的目标文件及其正确的路径。否则会导致链接器错误