김동균
김동균

Reputation: 33

how to solve this problem compiler error that linker command failed in VSCODE

I wrote some C code on VSCODE like that.

The code is divided into three files: the header, the function, and main in same project folder. But when I started compile, files are can't compile and error. like terminal text.

Maybe I think this error is linking error.. How to solve this problem..?

[source code]

mysqrt.c

#include "mysqrt.h"
#include <stdio.h>
#include <math.h>

double mysqrt(double a, double b){
    double result = sqrt(pow(a,2)+pow(b,2));
    return result;
}

mysqrt.h

#include <stdio.h>
double mysqrt(double a, double b);

mysqrtTest.c

#include <stdio.h>
#include <math.h>
#include "mysqrt.h"

void main(void){
    double sum = mysqrt(3,4);
    printf("%.2f\n",sum);
}

[terminal text]

/Users/kim_donggyun/Desktop/My File/MyFile/VSCodeWorkFolder/2019_2_finalExam/mysqrtTest.c:5:1: warning: 
      return type of 'main' is not 'int' [-Wmain-return-type]
void main(void){
^
/Users/kim_donggyun/Desktop/My File/MyFile/VSCodeWorkFolder/2019_2_finalExam/mysqrtTest.c:5:1: note: change
      return type to 'int'
void main(void){
^~~~
int
1 warning generated.

Undefined symbols for architecture x86_64:
 "_mysqrt", referenced from:
    _main in mysqrtTest-45c3c1.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

[OS]: macOS Mojave 10.14.6

Upvotes: 0

Views: 1061

Answers (1)

dvhh
dvhh

Reputation: 4750

to resolve your linking issue you need to compile all your c file, as dependencies are not automatically resolved ( header files could be name separately from code file so .h files and .c files are independant ).

# assuming that gcc is your compiler
gcc -Wall -Wextra -Werror -pedantic -o mysqrtTest mysqrtTest.c mysqrt.c -lm

Although I would recommend you to learn about separate compilation, and using a build system, like make

Example of Makefile

mysqrtTest: mysqrtTest.o mysqrt.o
    ${CC} -o $@ $^ -lm

then use make to build your binary

Upvotes: 1

Related Questions