问题描述:
以下所有关于pam的函数未定义的情况都适用
/usr/bin/ld: auth-pam.o: in function `sshpam_init':
openssh-9.3p2/build/../auth-pam.c:710: undefined reference to `pam_get_item'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:714: undefined reference to `pam_end'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:719: undefined reference to `pam_start'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:740: undefined reference to `pam_set_item'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:755: undefined reference to `pam_putenv'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:767: undefined reference to `pam_set_item'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:740: undefined reference to `pam_set_item'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:769: undefined reference to `pam_end'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:719: undefined reference to `pam_start'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:756: undefined reference to `pam_strerror'
/usr/bin/ld: auth-pam.o: in function `import_environments':
/openssh-9.3p2/build/../auth-pam.c:378: undefined reference to `pam_putenv'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:379: undefined reference to `pam_strerror'
/usr/bin/ld: auth-pam.o: in function `sshpam_query':
/openssh-9.3p2/build/../auth-pam.c:898: undefined reference to `pam_strerror'
/usr/bin/ld: auth-pam.o: in function `sshpam_cleanup':
/openssh-9.3p2/build/../auth-pam.c:674: undefined reference to `pam_set_item'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:686: undefined reference to `pam_end'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:682: undefined reference to `pam_setcred'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:677: undefined reference to `pam_close_session'
/usr/bin/ld: auth-pam.o: in function `do_pam_setcred':
/openssh-9.3p2/build/../auth-pam.c:1104: undefined reference to `pam_set_item'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:1114: undefined reference to `pam_setcred'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:1124: undefined reference to `pam_strerror'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:1111: undefined reference to `pam_setcred'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:1107: undefined reference to `pam_strerror'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:1121: undefined reference to `pam_strerror'
/usr/bin/ld: auth-pam.o: in function `do_pam_chauthtok':
/openssh-9.3p2/build/../auth-pam.c:1193: undefined reference to `pam_set_item'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:1199: undefined reference to `pam_chauthtok'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:1201: undefined reference to `pam_strerror'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:1196: undefined reference to `pam_strerror'
/usr/bin/ld: auth-pam.o: in function `do_pam_putenv':
/openssh-9.3p2/build/../auth-pam.c:1251: undefined reference to `pam_putenv'
/usr/bin/ld: auth-pam.o: in function `do_pam_account':
/openssh-9.3p2/build/../auth-pam.c:1085: undefined reference to `pam_acct_mgmt'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:1086: undefined reference to `pam_strerror'
/usr/bin/ld: auth-pam.o: in function `sshpam_thread':
/openssh-9.3p2/build/../auth-pam.c:493: undefined reference to `pam_get_item'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:519: undefined reference to `pam_set_item'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:523: undefined reference to `pam_authenticate'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:534: undefined reference to `pam_chauthtok'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:583: undefined reference to `pam_strerror'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:563: undefined reference to `pam_getenvlist'
/usr/bin/ld: auth-pam.o: in function `do_pam_session':
/openssh-9.3p2/build/../auth-pam.c:1212: undefined reference to `pam_set_item'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:1217: undefined reference to `pam_open_session'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:1223: undefined reference to `pam_strerror'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:1215: undefined reference to `pam_strerror'
/usr/bin/ld: auth-pam.o: in function `sshpam_auth_passwd':
/openssh-9.3p2/build/../auth-pam.c:1370: undefined reference to `pam_set_item'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:1376: undefined reference to `pam_authenticate'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:1386: undefined reference to `pam_strerror'
/usr/bin/ld: /openssh-9.3p2/build/../auth-pam.c:1373: undefined reference to `pam_strerror'
/usr/bin/ld: auth-pam.o: in function `fetch_pam_environment':
/openssh-9.3p2/build/../auth-pam.c:1266: undefined reference to `pam_getenvlist'
解决方法:
1、安装必要依赖:
yum install pam*
# 主要是pam-devel的包
2、修改Makefile文件
vim Makefile
在大概51行
LIBS=-lcrypto -ldl -lutil -lz -lcrypt -lresolv -lsystemd, 添加-lpam
# 添加编译依赖 -lpam
LIBS=-lcrypto -ldl -lutil -lz -lcrypt -lresolv -lsystemd -lpam
3、修改 auth-pam.c文件
在头部添加引用:
vim auth-pam.c
#include <security/pam_appl.h>
然后make即可通过