Makefile 静态库问题 请教各位!谢谢大侠们

yangkunhenry 2018-05-24 11:39:38
make[1]: Entering directory `/home/Nibuyongpinle/FOTA_Server/libcoap-master_new_05_15/examples'
cc -o coap-client client.o -L.. -lcoap -lcoap
../libcoap.a(common.o): In function `get_md5':
common.c:(.text+0x562): undefined reference to `MD5_Init'
common.c:(.text+0x586): undefined reference to `MD5_Update'
common.c:(.text+0x5eb): undefined reference to `MD5_Final'


是这样的:
根目录下的Makefile是生成libcoap.a这个静态库,其中包含了common文件下的common.o

common.o定义了的接口中有用到了MD5相关第三方库函数

example下的文件又有调用common.o中的接口。

在编译的时候就出现这样的问题。
我这边看应该是需要在libcoap.a中 要AR MD5相关的库,但是目前我只有MD的.a静态库,这个需要怎么处理

Makefile不熟,请教各位!谢谢大侠们
...全文
1127 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangkunhenry 2018-06-01
  • 打赏
  • 举报
回复
引用 3 楼 ckc 的回复:
连接的时候加上 -lcrypto 注意这个.a应该在库的搜索目录中,如果不在,要用-L路径加上这个路径 另外md5应该很容易找到源代码的吧,用源代码感觉更舒服一些
哦,我有加 -lcrypto。 找到原因了,因为我又个库依赖 lcrypto,但是这个库我放在了 lcrypto的后面了,放到前面之后好了。 原来:

 52 coap-server:    server.o $(libcoap)
 53     $(CC) -o $@ $< $(COMMON_OPTION_O) $(LDFLAGS) -lcrypto -lssl -lpthread $(LDLIBS) $(COMMON_O)  
因为我的COMMON_O依赖 lcrypto,所以需要放在它的前面

 52 coap-server:    server.o $(libcoap)
 53     $(CC) -o $@ $< $(COMMON_OPTION_O) $(COMMON_O)  $(LDFLAGS) -lcrypto -lssl -lpthread $(LDLIBS)
ckc 2018-05-25
  • 打赏
  • 举报
回复
连接的时候加上 -lcrypto 注意这个.a应该在库的搜索目录中,如果不在,要用-L路径加上这个路径 另外md5应该很容易找到源代码的吧,用源代码感觉更舒服一些
yangkunhenry 2018-05-24
  • 打赏
  • 举报
回复
引用 1 楼 jklinux 的回复:
再编个md5的静态库,或者改成使用动态库试看看。 使用静态库有时会遇到交叉依赖的问题,如ffmpeg使用静态库就非常麻烦,改成使用动态库就好很多了
谢谢回复,不过这个md5的库是第三方的库,我只能用MD5的这个libcrypto.a静态库
jklinux 2018-05-24
  • 打赏
  • 举报
回复
再编个md5的静态库,或者改成使用动态库试看看。 使用静态库有时会遇到交叉依赖的问题,如ffmpeg使用静态库就非常麻烦,改成使用动态库就好很多了

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧