gcc添加-Wl,-rpath参数时报找不到对应路径错误是什么原因?
问题原因
你使用的–Wl,-rpath参数的首字符是全角长破折号,不是gcc可识别的半角减号(-)。gcc无法将全角符号开头的内容识别为编译参数,会直接将整段–Wl,-rpath=./ffmpeg/lib判定为待编译的输入文件,因此抛出找不到该文件的错误。
解决方案
将参数前的全角破折号替换为半角减号即可,修正后的编译命令如下:
gcc -o muxing muxing.c -I ./ffmpeg/include -L ./ffmpeg/lib -lavcodec -lavfilter -lavutil -lswresample -lavdevice -lavformat -lpostproc -lswscale -lm -lpthread -lasound -Wl,-rpath='./ffmpeg/lib'
额外注意事项
- 不要直接复制排版类文档中的命令,很多编辑器、文档工具会自动将半角减号替换为长破折号,手动输入参数前缀的横杠可以避免这类问题
- 如果是在Makefile中配置的编译参数,需要检查Makefile对应行的符号格式,部分编辑器的自动格式化功能也会修改符号类型
- 后续运行程序时如果仍提示找不到FFmpeg动态库,可以将rpath的相对路径替换为绝对路径,避免执行程序时工作目录变化导致相对路径失效
内容的提问来源于stack exchange,提问作者YCChiang
相关产品推荐
相关产品推荐

