2015-04-04 3 views
0

Мне нужно написать программу, используя C и CUnit, для проверки некоторых простых функций стека и использования «Makefile», но когда я пытаюсь ее скомпилировать, я всегда получаю те же ошибки. Терминал на убунту показать это, когда я пишу команду "сделать":CUnit (неопределенная ссылка)

gcc -o Pilhaa_teste.o Pilhaa_teste.c -lcunit 
/tmp/ccLqNqAx.o: In function `main': 
Pilhaa_teste.c:(.text+0x21): undefined reference to `clean_suite1' 
Pilhaa_teste.c:(.text+0x26): undefined reference to `init_suite1' 
Pilhaa_teste.c:(.text+0x50): undefined reference to `testaTOP' 

.h, что я написал это:

typedef struct No { 
    struct No *prox; 
    int info; 
}no; 

typedef struct pilha { 
    no *topo; 
}Pilha; 

int init_suite1(void); 

int clean_suite1(void); 

void testaTOP(void); 

/*create empty stack*/ 
Pilha *cria_pilha(void); 

/*add one element to the stack*/ 
void push (Pilha *p, int valor); 

/*free first element of stack*/ 
void pop (Pilha *p); 

/*print and find first element*/ 
int top (Pilha *p); 

/*free stack*/ 
void libera(Pilha *p); 

/*print stack*/ 
void imprime(Pilha *p); 

.c с основным кодом:

#include <stdlib.h> 
    #include <stdio.h> 
    #include "pilha.h" 
    #include "CUnit/Basic.h" 


int main(){ 
    CU_pSuite pSuite = NULL; 

    if (CUE_SUCCESS != CU_initialize_registry()) 
     return CU_get_error(); 

    pSuite = CU_add_suite("Suite_1", init_suite1, clean_suite1); 
     if(NULL == pSuite){ 
     CU_cleanup_registry(); 
     return CU_get_error(); 
    } 

    if(NULL == CU_add_test(pSuite, "test of top()", testaTOP)){ 
     CU_cleanup_registry(); 
     return CU_get_error(); 
    } 


    CU_basic_set_mode(CU_BRM_VERBOSE); 
    CU_basic_run_tests(); 
    CU_cleanup_registry(); 
    return CU_get_error(); 
} 

и clean_suite1, init_suite1 и testaTOP функции:

static Pilha *p = NULL; 

    int init_suite1(void){ 
     push(p, 6); 
     if(p!=NULL) 
      return 0; 
     else 
      return 1; 
    } 

    int clean_suite1(void){ 
     pop(p); 
     if (p == NULL) 
      return 0; 
     else 
      return 1; 
    } 

    void testaTOP(void){ 
     Pilha *p = NULL; 
     push (p, 6); 
     if (p != NULL){ 
      CU_ASSERT(top(p) == 6); 
      push (p, 7); 
      if (p != NULL) 
       CU_ASSERT(top(p) ==7); 
     } 

     no *aux = p->topo->prox; 
     free(p); 
     free(aux); 

    } 

записаны основные функции, push, pop и другие, но проблем с ними нет. Раньше они использовались в другой моей программе.

ответ

0

gcc -o компилирует и связывает ваши источники, поэтому добавьте .c, где функции реализованы или скомпилированы отдельно с gcc -c, который не связывает исходные файлы.

Смежные вопросы