2012-05-24 3 views
2

По какой-то причине у меня возникла проблема с компиляцией общего объекта, который использует ncurses. Хотя я включаю и связываю с -lncurses, компиляция файла .so терпит неудачу. Пожалуйста, порекомендуйте.Невозможно ссылаться на ncurses в общем объекте

#include <string.h> 
#include "../include/mod_curse.h" /* Includes ncurses.h and friends */ 

int OnConsoleCmd(McapiS *API, ArgS *CmdArgs) /* Just ignore these, they're included in mod_curse.h */ 
{ 
    if(!strcmp(CmdArgs->Data, "help")) 
    { 
     API->BPrintf(STD, "\n-- mod_curse.so --\n"); 

     return 0; 
    } 
} 

int OnLoad(McapiS *API, va_list Args) 
{ 
    initscr(); /* These are the problems */ 
} 

/* Time to clean up and unload the module */ 
int OnDeload(McapiS *API, va_list Args) 
{ 
    endwin(); 
} 

Вот Makefile:

CC = clang 
CFLAGS = -Wall -fPIC 

# Object Files 
OBJ = mod_curse.o 
# Header Files 
INCLUDE = include/mod_curse.h 


# Main Module 
mod_setup.so: $(OBJ) $(INCLUDE) 
    $(CC) -shared -Wl,-soname,mod_curse.so,--no-undefined -o ../../mod_curse.so -lncurses $(OBJ) 

# Source Files 
mod_curse.o: src/mod_curse.c $(INCLUDE) 
    $(CC) $(CFLAGS) -c src/mod_curse.c 

clean: 
    rm $(OBJ) 

Вот ошибки:

3 warnings generated. 
clang -shared -Wl,-soname,mod_curse.so,--no-undefined -o ../../mod_curse.so -lncurses mod_curse.o 
mod_curse.o: In function `OnLoad': 
src/mod_curse.c:(.text+0x81): undefined reference to `initscr' 
mod_curse.o: In function `OnDeload': 
src/mod_curse.c:(.text+0xb1): undefined reference to `endwin' 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 
make: *** [mod_setup.so] Error 1 

ответ

2

мне нужно, чтобы изменить свою команду грим, чтобы иметь -lncurses появляются после $ (OBJ).

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

  • Нет связанных вопросов^_^