项目场景:
系统适配:
项目中往往存在需要做多种操作系统得编译适配。
比如 centos -> ubuntu/(其它操作系统)
问题描述
总是报某些自己编译安装得库找不见:
查到得答案经常是:
-I用于包含文件的搜索路径。
-L用于库文件的搜索路径。
1、在使用GCC编译器时,可以使用-L选项来指定库文件的搜索路径。如果有多个路径,可以使用多个-L选项,每个选项后面跟着一个路径。
2、在GCC中,-I选项是用于指定包含文件的搜索路径的
3、如果你想指定多个包含文件的搜索路径,你应该为每个路径使用单独的-I选项
4、-L/path/to/library1:/path/to/library2 表示同时在 /path/to/library1 和 /path/to/library2 中搜索库文件
- -L/path/to/library1:/path/to/library2 不是所有操作系统上都支持
原因分析:
-L/path/to/library1:/path/to/library2 不是所有操作系统上都支持
确实在某些系统和情况下,使用冒号 : 是可以在 -L 选项中同时指定多个库搜索路径的。
在类Unix系统(如Linux)上,可以使用冒号 : 分隔多个路径,类似于:
gcc -o my_program my_source.c -L/path/to/library1:/path/to/library2 -lmylibrary
这种写法在某些环境中是被接受的。但请注意,这种写法可能不在所有系统上都有效,因此如果在特定环境中遇到问题,可以考虑使用多个 -L 选项的方式。
解决方案:
将 -L/path/to/library1:/path/to/library2修改为 -L/path/to/library1 -L/path/to/library2
如下:
将
gcc -o my_program my_source.c -L/path/to/library1:/path/to/library2 -lmylibrary
修改为以下方式
gcc -o my_program my_source.c -L/path/to/library1 -L/path/to/library2 -lmylibrary