Avatar ·

Erro de linker "undefined reference" em C++: causas e correção

Olá! Comecei a estudar C++ e me deparei com um erro que não consigo entender. Estou escrevendo um programa simples que soma dois números, mas o compilador exibe um erro estranho na fase de linker. Aqui está meu código. Tenho um arquivo de cabeçalho `math_utils.h`: ```cpp #ifndef MATH_UTILS_H #define MATH_UTILS_H int add(int a, int b); #endif ``` Arquivo `math_utils.cpp`: ```cpp #include "math_utils.h" int add(int a, int b) { return a + b; } ``` E o arquivo principal `main.cpp`: ```cpp #include #include "math_utils.h" int main() { std::cout << "Sum: " << add(5, 3) << std::endl; return 0; } ``` Estou compilando assim: `g++ main.cpp -o program`. Em resposta, recebo o erro: ``` /tmp/ccXxYyZz.o: In function `main': main.cpp:(.text+0x1a): undefined reference to `add(int, int)' collect2: error: ld returned 1 exit status ``` Eu verifiquei — a função `add` está definida em `math_utils.cpp`, o cabeçalho está incluído. Por que o linker não a enxerga? O que é "undefined reference"?