用vsftp实现基于mysql的虚拟用户,在编译
mysql验证模块的时候出现如下错误:
[root@localhost pam_mysql]# make
mkdir -p ./dynamic
gcc -O2 -Dlinux -DLINUX_PAM -ansi -D_POSIX_SOURCE -Wall -Wwrite-strings -Wpointer-arith -Wcast-qual -Wcast-align -Wtraditional -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline -Wshadow -pedantic -fPIC -I/usr/local/mysql/include/mysql -DPAM_DYNAMIC -c pam_mysql.c -o dynamic/pam_mysql.o
pam_ mysql.c:35:25: 错误:mysql/mysql.h:没有那个文件或目录
pam_mysql.c:81: 错误:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
pam_mysql.c:141: 错误:expected ‘)’ before ‘*’ token
pam_mysql.c:143: 错误:expected ‘)’ before ‘*’ token
pam_mysql.c:151: 错误:expected ‘)’ before ‘*’ token
pam_mysql.c: 在函数 ‘breakArgs’ 中:
pam_mysql.c:157: 警告:传统 C 不接受 ISO C 风格的函数定义
pam_mysql.c: 在函数 ‘parseArgs’ 中:
pam_mysql.c:233: 警告:传统 C 不接受 ISO C 风格的函数定义
pam_mysql.c: 在顶层:
pam_mysql.c:391: 错误:expected ‘)’ before ‘*’ token
pam_mysql.c: 在函数 ‘db_close’ 中:
pam_mysql.c:420: 警告:传统 C 不接受 ISO C 风格的函数定义
pam_mysql.c:421: 错误:‘mysql_auth’ 未声明 (在此函数内第一次使用)
pam_mysql.c:421: 错误:(即使在一个函数内多次出现,每个未声明的标识符在其
pam_mysql.c:421: 错误:所在的函数内只报告一次。)
pam_mysql.c:424: 警告:隐式声明函数 ‘mysql_close’
pam_mysql.c:424: 警告:对 ‘mysql_close’ 的嵌套的外部声明
pam_mysql.c: 在顶层:
pam_mysql.c:428: 错误:expected ‘)’ before ‘*’ token
pam_mysql.c: 在函数 ‘converse’ 中:
pam_mysql.c:613: 警告:传统 C 不接受 ISO C 风格的函数定义
pam_mysql.c:617: 警告:提领类型双关的指针将破坏强重叠规则
pam_mysql.c: 在函数 ‘saltify’ 中:
pam_mysql.c:636: 警告:传统 C 不接受 ISO C 风格的函数定义
pam_mysql.c: 在顶层:
pam_mysql.c:673: 错误:expected ‘)’ before ‘*’ token
pam_mysql.c: 在函数 ‘askForPassword’ 中:
pam_mysql.c:800: 警告:传统 C 不接受 ISO C 风格的函数定义
pam_mysql.c: 在顶层:
pam_mysql.c:839: 错误:expected ‘)’ before ‘*’ token
pam_mysql.c: 在函数 ‘pam_sm_authenticate’ 中:
pam_mysql.c:982: 警告:传统 C 不接受 ISO C 风格的函数定义
pam_mysql.c:989: 错误:‘MYSQL’ 未声明 (在此函数内第一次使用)
pam_mysql.c:989: 错误:expected ‘;’ before ‘auth_sql_server’
pam_mysql.c:1009: 警告:提领类型双关的指针将破坏强重叠规则
pam_mysql.c:1014: 警告:提领类型双关的指针将破坏强重叠规则
pam_mysql.c:1019: 警告:隐式声明函数 ‘db_connect’
pam_mysql.c:1019: 警告:对 ‘db_connect’ 的嵌套的外部声明
pam_mysql.c:1019: 错误:‘auth_sql_server’ 未声明 (在此函数内第一次使用)
pam_mysql.c:1027: 警告:隐式声明函数 ‘db_checkpasswd’
pam_mysql.c:1027: 警告:对 ‘db_checkpasswd’ 的嵌套的外部声明
pam_mysql.c: 在函数 ‘pam_sm_acct_mgmt’ 中:
pam_mysql.c:1047: 警告:传统 C 不接受 ISO C 风格的函数定义
pam_mysql.c: 在函数 ‘pam_sm_setcred’ 中:
pam_mysql.c:1057: 警告:传统 C 不接受 ISO C 风格的函数定义
pam_mysql.c: 在函数 ‘pam_sm_chauthtok’ 中:
pam_mysql.c:1069: 警告:传统 C 不接受 ISO C 风格的函数定义
pam_mysql.c:1077: 错误:‘MYSQL’ 未声明 (在此函数内第一次使用)
pam_mysql.c:1077: 错误:expected ‘;’ before ‘auth_sql_server’
pam_mysql.c:1100: 错误:‘auth_sql_server’ 未声明 (在此函数内第一次使用)
pam_mysql.c:1113: 警告:提领类型双关的指针将破坏强重叠规则
pam_mysql.c:1120: 警告:提领类型双关的指针将破坏强重叠规则
pam_mysql.c:1147: 警告:提领类型双关的指针将破坏强重叠规则
pam_mysql.c:1158: 警告:提领类型双关的指针将破坏强重叠规则
pam_mysql.c:1173: 警告:提领类型双关的指针将破坏强重叠规则
pam_mysql.c:1180: 警告:提领类型双关的指针将破坏强重叠规则
pam_mysql.c:1187: 警告:隐式声明函数 ‘updatePasswd’
pam_mysql.c:1187: 警告:对 ‘updatePasswd’ 的嵌套的外部声明
pam_mysql.c: 在函数 ‘pam_sm_open_session’ 中:
pam_mysql.c:1201: 警告:传统 C 不接受 ISO C 风格的函数定义
pam_mysql.c: 在函数 ‘pam_sm_close_session’ 中:
pam_mysql.c:1211: 警告:传统 C 不接受 ISO C 风格的函数定义
make: *** [dynamic/pam_mysql.o] 错误 1
以下是修改后的Makefile文件的部分内容(其中红色部分是一般需要修改的c头文件的路径和库文件的路径):
# Convenient defaults for compiling independently of the full source
# tree.
ifndef FULL_LINUX_PAM_SOURCE_TREE
export DYNAMIC=-DPAM_DYNAMIC
export CC=gcc
export CFLAGS=-O2 -Dlinux -DLINUX_PAM \
-ansi -D_POSIX_SOURCE -Wall -Wwrite-strings \
-Wpointer-arith -Wcast-qual -Wcast-align -Wtraditional \
-Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline \
-Wshadow -pedantic -fPIC -I/usr/local/mysql/include/mysql
export MKDIR=mkdir -p
export LD_D=gcc -shared -Xlinker -x -L/usr/local/mysql/lib/mysql -lz
endif
我是源码安装 mysql的.上面C头文件路径和库文件路径,确认不会错.但编译的时候还是出错,郁闷了,请各位帮助解答!
--转自