Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Программирование под Unix/Linux > Компиляция програмы для PAM |
Автор: Elyad 5.9.2006, 13:26 |
Работаю с ОС Linux, изучаю в данный момент PAM. Составила простенькую программу и пытаюсь откомпилировать ее. Если кто знает, помогите разобраться в тех ошибках которые она выдает при компиляции. Для начала привожу текст самой программы #include <security/pam_appl.h> #include <unistd.h> #include <pwd.h> #include <sys/types.h> #include <stdio.h> int su_conv(int num_msg, const struct pam_message **mes, struct pam_response **resp, void *appdata_ptr) { struct pam_message *m=*mes; struct pam_response *r=*resp; while (num_msg--) { switch(m->msg_style) { case PAM_PROMPT_ECHO_ON : fprintf(stdout,"%s",m->msg); r->resp=(char *)malloc(PAM_MAX_RESP_SIZE); fgets(r->resp,PAM_MAX_RESP_SIZE-1,stdin); m++; r++; break; case PAM_PROMPT_ECHO_OFF: r->resp=getpass(m->msg); m++; r++; break; case PAM_ERROR_MSG : fprintf(stderr,"%s",m->msg); m++; r++; break; case PAM_TEXT_INFO : fprintf(stdout,"%s",m->msg); m++; r++; break; default : break; } } return PAM_SUCCESS; } static struct pam_conv conv={su_conv, NULL}; int main(int argc, char *argv[]) { int ret; pam_handle_t *pamh; struct passwd *pwd; ret=pam_start("su",argv[1],&conv,&pamh); if (ret==PAM_SUCCESS) ret=pam_authenticate(pamh,0); if (ret==PAM_SUCCESS) ret=pam_acct_mgmt(pamh,0); if (ret==PAM_SUCCESS) if ((pwd=getpwnam(argv[1]))!=NULL) setuid(pwd->pw_uid); else { pam_end(pamh,PAM_AUTH_ERR); exit(1); } pam_end(pamh,PAM_SUCCESS); return (ret==PAM_SUCCESS?0:1); } При этом при компиляции получаю следующее my_pam.c: In function `su_conv': my_pam.c:10: warning: initialization discards qualifiers from pointer target type /tmp/ccXRTMg0.o(.text+0x171): In function `main': : undefined reference to `pam_start' /tmp/ccXRTMg0.o(.text+0x18a): In function `main': : undefined reference to `pam_authenticate' /tmp/ccXRTMg0.o(.text+0x1a3): In function `main': : undefined reference to `pam_acct_mgmt' /tmp/ccXRTMg0.o(.text+0x1eb): In function `main': : undefined reference to `pam_end' /tmp/ccXRTMg0.o(.text+0x205): In function `main': : undefined reference to `pam_end' collect2: ld returned 1 exit status В чем дело? Если кто знает пишите. ![]() |
Автор: gruy 6.9.2006, 12:55 |
При сборке библиотеку pam подключала -lpam ? |
Автор: bilbobagginz 9.9.2006, 00:47 |
нужны ответы на:
|