在写Makefile的时候,其实并不像写CMakeList.txt那么方便,直接include_directories, target_link_libraries,而且对于这些关键字大小写都是不敏感的,可是Makefile不一样,所以LZ这里对参数-I (大写字母i), -l (小写字母l) 和-L的区别也进行了简单的记录和总结。
参数-I (大写字母i):
可以看作是include的首字母大写,主要是包含对应的头文件路径
参数-l(小写字母l)
可以看做是library,主要是链接的库的名字,例如
-ltensorflow_cc就代表链接的库的名字为:libtensorflow_cc.so,这里其实很容易出现cannot find的错误
需要排查几个问题:
第一个,使用export添加对应的路径LIBRARY_PATH, 如果不怕冲突可以写在~/.bashrc或者/etc/profile里面
第二个,查看对应库的权限,有些时候会因为权限不够而找不到库,保险可以设成777来排除这个问题
第三个,查看链接是否有效,如果库后面有版本号,需要手动生成对应的软链接,不然makefile还是找不到,类似下面这种方式
ln -s libtensorflow_cc.so.1.14.1 libtensorflow_cc.so.1ln -s libtensorflow_cc.so.1 libtensorflow_cc.so
参数-L
这个就是包含库的文件夹位置,其实也是库的路径设置。
积攒了好多需要总结,梳理的东西,还是要保持住整理总结,更新博客的习惯!