ошибка компиляции файла на Ubuntu которой не было на macos

Собираю библиотеку, при выполнении цели test ошибка error: implicit declaration of function ‘ck_assert_double_eq’; did you mean ‘ck_assert_uint_eq’? На macos до этого всё собралось, помогите, пожалуйста, понять, в чем дело.

Makefile

CC = gcc
S21_MATH_C = s21_*.c
S21_MATH_O = s21_*.o
CFLAGS = -Wall -Wextra -Werror -std=c11
CCOV = -fprofile-arcs -ftest-coverage
COVFLAGS = --coverage
LDFLAGS = -lgcov
TFLAGS = -lcheck
#ASAN = -g -fsanitize=address

all: clean test s21_math.a gcov_report

s21_math.a: $(S21_MATH_C)
    $(CC) $(CFLAGS) -c -g $(S21_MATH_C)
    ar rcs s21_math.a $(S21_MATH_O)
    ranlib s21_math.a


test_math.o: test_math.c
    $(CC) $(ASAN) $(CFLAGS) -c test_math.c

test: s21_math.a test_math.o
    $(CC) $(ASAN) $(CCOV) test_math.o s21_math.a -o test $(TFLAGS)
    ./test
    
gcov_report: s21_math.a test_math.o
    $(CC) $(ASAN) $(GFLAGS) $(CCOV) -g test_math.c $(S21_MATH_C) s21_math.a -L. s21_math.a $(TFLAGS) -o ./htmlreport.out
    ./htmlreport.out
    lcov -t "htmlreport" -o test.info -c -d .
    genhtml -o report test.info

check:
    cppcheck --enable=all --force *.h *.c
    CK_FORK=no leaks --atExit -- ./test
    cp ../materials/linters/CPPLINT.cfg CPPLINT.cfg
    python3 ../materials/linters/cpplint.py --extension=c *.c
#       valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes --verbose --log-file=RESULT_VALGRIND.txt ./test


clean:
    rm -rf *.o *.a *.css *.html *.gcno *.gcda *.out *.info test report *.dSYM

rebuild: clean all

test_maht.c

#include <check.h>
#include <math.h>
#include <stdio.h>

#include "s21_math.h"

START_TEST(fabs1) {
  double zero = 0;
  ck_assert_double_eq(s21_fabs(-15896547832.251478956),
                      fabs(-15896547832.251478956));
  ck_assert_double_eq(s21_fabs(1.0), fabs(1.0));
  ck_assert_double_eq(s21_fabs(15896547832.251478956),
                      fabs(15896547832.251478956));
  ck_assert_double_eq(s21_fabs(0.1), fabs(0.1));
  ck_assert_double_eq(s21_fabs(0.741852963321654987),
                      fabs(0.741852963321654987));
  ck_assert_double_eq(s21_fabs(-99999.9999999), fabs(-99999.9999999));
  ck_assert_double_eq(s21_fabs(zero), fabs(zero));
}
END_TEST

START_TEST(pow1) {
  double zero = 0;
  double one = 1;

  ck_assert_double_eq_tol(s21_pow(2.2, 2.2), pow(2.2, 2.2), 16);
  ck_assert_double_eq_tol(s21_pow(1.0, 5), pow(1.0, 5), 16);
  ck_assert_double_eq_tol(s21_pow(7832.2514, 2.36), pow(7832.2514, 2.36), 16);
  ck_assert_double_eq_tol(s21_pow(0.1, 2), pow(0.1, 2), 16);
  ck_assert_double_eq_tol(s21_pow(0.7418, 8.1), pow(0.7418, 8.1), 16);
  ck_assert_double_eq_tol(s21_pow(-99999.9999999, -6), pow(-99999.9999999, -6),
                          16);
  ck_assert_double_eq_tol(s21_pow(zero, one), pow(zero, one), 16);
  ck_assert_double_eq_tol(s21_pow(5.2, 0.5), pow(5.2, 0.5), 16);
  ck_assert_double_eq_tol(s21_pow(5.2, -3), pow(5.2, -3), 16);
  ck_assert_double_eq_tol(s21_pow(5.2, 0), pow(5.2, 0), 16);
  ck_assert_double_eq_tol(s21_pow(0, 1), pow(0, 1), 16);
}
END_TEST

START_TEST(sqrt1) {
  ck_assert_double_eq_tol(s21_sqrt(2.2), sqrt(2.2), 16);
  ck_assert_double_eq_tol(s21_sqrt(1225.36987), sqrt(1225.36987), 16);
  ck_assert_double_eq_tol(s21_sqrt(0.259814), sqrt(0.259814), 16);
  ck_assert_double_eq_tol(s21_sqrt(0), sqrt(0), 16);
  ck_assert_double_nan(s21_sqrt(-2.2));
}
END_TEST

int main(void) {
  Suite *s1 = suite_create("Core");
  TCase *tc1_1 = tcase_create("Core");
  SRunner *sr = srunner_create(s1);
  int nf;

  suite_add_tcase(s1, tc1_1);
  tcase_add_test(tc1_1, fabs1);
  tcase_add_test(tc1_1, pow1);
  tcase_add_test(tc1_1, sqrt1);

  srunner_run_all(sr, CK_ENV);
  nf = srunner_ntests_failed(sr);
  srunner_free(sr);

  return nf == 0 ? 0 : 1;
}

error


Ответы (3 шт):

Автор решения: eri

ck_assert_double_eq и тп находятся в /usr/include/check.h которого нет. Он в пакете check. Установите его sudo apt install check

→ Ссылка
Автор решения: Olga

оказалось в убунту 20.04 check версии 0.10, в библиотеке просто не было необходимых функций. Проблема решена обновлением ОС. Большое всем спасибо за ответы!

→ Ссылка
Автор решения: Amazomic

Привет Студентам Школы 21 от Казанского кампуса)

мне помогли эти команды:

sudo apt update && sudo apt upgrade

потом

do-release-upgrade
→ Ссылка