我正在尝试使用自定义构建的bmdtools版本来编译利巴夫11,这是我在~/libav-11.8/build下使用Ubuntu14.04下的g++ 4.8.4编译的。bmd使用pkg-config来构建g++标志,而且由于编译在链接阶段失败,我测试了pkg-config输出如下:
echo `pkg-config --cflags --libs libavcodec libavformat libswscale libavutil`护盾
-I/usr/local/include -pthread -L/usr/local/lib -lavformat -lavcodec
-ldl -lasound -lz -lwscale -lavutil -lm因此,我发现-I和-L标志没有设置为自定义构建位置。设置PKG_CONFIG_PATH=~/libav-11.8/build/lib/pkgconfig并再次运行它
-Ibuild/include -pthread -Lbuild/lib ...<lib flags>如果我从构建根文件夹运行g++,这将是正确的。不应该将pkg-config解析为绝对路径而不是相对路径吗?这种行为背后的理由是什么?
发布于 2016-10-19 17:42:43
在阅读免费桌面指南之后,我意识到pkg并不能验证二进制文件、库或路径是否准确。它只输出在Libs和Cflags的.pc文件中写入的内容。
在我的例子中,这些都是由libav的编译过程创建的,并使用传递给prefix的configure变量。
因此,在重新编译prefix设置为绝对路径的libav之后,pkg-config将输出适合于编译其他项目的-I和-L标志。
https://unix.stackexchange.com/questions/317500
复制相似问题