I'm having trouble finding why my program wont compile. Im not very good at C so I hope someone can spot my error. I was told it was probably a header issue, that is why I'm starting with this. This is the message:
carson@carson-Q303UA:~/Desktop/Github/ccomputing$ makegcc -Wall -Werror test.c -o test polynomial.o counting.o -g -std=c99/tmp/ccfRUFXx.o: In function `main':/home/carson/Desktop/Github/ccomputing/test.c:40: undefined reference to `pymat_create'/home/carson/Desktop/Github/ccomputing/test.c:41: undefined reference to `pymat_create'/home/carson/Desktop/Github/ccomputing/test.c:43: undefined reference to `pymat_set_element'/home/carson/Desktop/Github/ccomputing/test.c:44: undefined reference to `pymat_set_element'/home/carson/Desktop/Github/ccomputing/test.c:45: undefined reference to `pymat_set_element'/home/carson/Desktop/Github/ccomputing/test.c:46: undefined reference to `pymat_set_element'/home/carson/Desktop/Github/ccomputing/test.c:48: undefined reference to `pymat_sum'/home/carson/Desktop/Github/ccomputing/test.c:52: undefined reference to `pymat_get_element'/home/carson/Desktop/Github/ccomputing/test.c:59: undefined reference to `pymat_delete'collect2: error: ld returned 1 exit statusMakefile:4: recipe for target 'test' failedmake: *** [test] Error 1
Here are my files, but for brevity, I will only include the function declarations mentioned.
So here is the setup:
Makefile
all: testtest: polynomial.o counting.o matrix.o gcc -Wall -Werror test.c -o test polynomial.o counting.o -g -std=c99matrix.o: matrix.c gcc -c matrix.cpolynomial.o: polynomial.c gcc -c polynomial.ccounting.o: counting.c gcc -c counting.c
test.c
#include <stdio.h>#include <stdlib.h>#include <inttypes.h>#include <math.h>#include <assert.h>#include "array.h"#include "matrix.h"#include "polynomial.h"int main() {
polynomial.h
// polynomial#ifndef POLYNOMIAL_H#define POLYNOMIAL_Htypedef struct Polynomial Polynomial;struct Polynomial { int deg; double *coefs;};// some functions#endif
polynomial.c
#include <stdio.h>#include <stdlib.h>#include <inttypes.h>#include <math.h>#include <assert.h>#include "array.h"#include "counting.h"#include "matrix.h"#include "polynomial.h"#define TRUE 1#define FALSE 0
matrix.h
#ifndef MATRIX_H#define MATRIX_H#include "polynomial.h"typedef struct Matrix Matrix;typedef struct PolyMatrix PolyMatrix;struct Matrix { int rows; int cols; double *data;};struct PolyMatrix { int rows; int cols; Polynomial *data;};PolyMatrix pymat_create(int rows, int cols);void pymat_clear(PolyMatrix A);void pymat_delete(PolyMatrix mat);PolyMatrix pymat_zero(int rows, int cols);Polynomial pymat_get_element(PolyMatrix mat, int row, int col);void pymat_set_element(PolyMatrix mat, int row, int col, Polynomial element);PolyMatrix pymat_get_rows(PolyMatrix mat, int rows, int *rows_arr);PolyMatrix pymat_get_cols(PolyMatrix mat, int cols, int *cols_arr);PolyMatrix pymat_join(PolyMatrix A, PolyMatrix B, int axis);//void pymat_print(PolyMatrix mat);PolyMatrix pymat_copy(PolyMatrix mat);#endif
matrix.c
#include <stdio.h>#include <stdlib.h>#include <assert.h>#include "array.h"#include "polynomial.c"#include "matrix.h"#define TRUE 1#define FALSE 0