初学Linux C编程遇到编译出错
运行下面编译命令,出错
gcc -g -W -Wall -pthread -lcrypto -o httpd httpd.c
错误信息:
/tmp/ccYw8W8E.o: In function `md5test':
/home/rivulet/work/Tinyhttpd-master/httpd.c:666: undefined reference to `MD5_Init'
/home/rivulet/work/Tinyhttpd-master/httpd.c:667: undefined reference to `MD5_Update'
/home/rivulet/work/Tinyhttpd-master/httpd.c:668: undefined reference to `MD5_Final'
collect2: error: ld returned 1 exit status
make: *** [httpd] Error 1
一开始以为是库没找到,但是在/user/local/lib下面明明存在libcrypto.so库,后来发现下面命令能编译成功
gcc -g -W -Wall -o httpd httpd.c -lssl -lcrypto
上面的文章指出,编译时候,-l所知识的库需要跟在.c文件的后面,表明依赖关系,库与库的之间的依赖关系需要通过顺序定义好,写前面的库对写在后面的库形成依赖关系
今天遇到这问题折腾了半天,记录一下