配置命令中包含路径时未找到头文件
Header file not found while path is included in configure command
正在尝试使用此配置命令从源代码构建 FFMPeG
./configure --x86asmexe=/home/mahmood/yasm-1.3.0/bin/yasm --enable-cuda --enable-cuvid --enable-nvenc --enable-nonfree --enable-libnpp \
--extra-cflags=-I"~/cuda-10.1.168/include,~/nv_codec_headers/include/ffnvcodec/" \
--extra-ldflags=-L"~/cuda-10.1.168/lib64/,~/nv_codec_headers/lib/pkgconfig/"
我在 config.log 中遇到此错误,它找不到 npp.h。请注意,额外的包含文件夹已提供给 gcc 命令,并且 npp.h 实际上存在于我提供的路径中。
gcc -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \
-D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DPIC -I~/cuda-10.1.168/include,~/nv_codec_headers/include/ffnvcodec/ \
-std=c11 -fomit-frame-pointer -fPIC -pthread -c \
-o /tmp/ffconf.dk4hdPMF/test.o /tmp/ffconf.dk4hdPMF/test.c
/tmp/ffconf.dk4hdPMF/test.c:1:10: fatal error: npp.h: No such file or directory
#include <npp.h>
^~~~~~~
npp.h 在这里
$ ls -l ~/cuda-10.1.168/include/npp.h
-rw-r--r-- 1 mahmood mahmood 2864 Dec 16 18:24 /home/mahmood/cuda-10.1.168/include/npp.h
我该如何解决?
这不是真正的 makefile 问题。
你有两个问题。首先,您不能通过用逗号分隔它们来将多个路径传递给 -I
选项,例如 -I<dir1>,<dir2>
。您必须使用多个 -I
选项,例如 -I<dir1> -I<dir2>
.
其次,~
是一个特殊字符,在调用编译器之前被shell展开,shell不会在命令行的任何地方展开 ~
。例如,如果您 运行 echo foo~bar
甚至 echo foo~/bar
,则 shell 不会将 ~
视为对您的主目录的引用,也不会扩展它。只有当它是单词中的 first 字符时才会被特殊对待。您需要使用 $HOME
环境变量,或者您需要在 -I
和目录之间添加一个 space,以便 ~
是单词中的第一个字符: -I$HOME/<dir1> -I$HOME/<dir2>
或 -I ~/<dir1> -I ~/<dir2>
.
如果您使用 $HOME
,请记住您需要在制作配方中转义 $
。
正在尝试使用此配置命令从源代码构建 FFMPeG
./configure --x86asmexe=/home/mahmood/yasm-1.3.0/bin/yasm --enable-cuda --enable-cuvid --enable-nvenc --enable-nonfree --enable-libnpp \
--extra-cflags=-I"~/cuda-10.1.168/include,~/nv_codec_headers/include/ffnvcodec/" \
--extra-ldflags=-L"~/cuda-10.1.168/lib64/,~/nv_codec_headers/lib/pkgconfig/"
我在 config.log 中遇到此错误,它找不到 npp.h。请注意,额外的包含文件夹已提供给 gcc 命令,并且 npp.h 实际上存在于我提供的路径中。
gcc -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \
-D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DPIC -I~/cuda-10.1.168/include,~/nv_codec_headers/include/ffnvcodec/ \
-std=c11 -fomit-frame-pointer -fPIC -pthread -c \
-o /tmp/ffconf.dk4hdPMF/test.o /tmp/ffconf.dk4hdPMF/test.c
/tmp/ffconf.dk4hdPMF/test.c:1:10: fatal error: npp.h: No such file or directory
#include <npp.h>
^~~~~~~
npp.h 在这里
$ ls -l ~/cuda-10.1.168/include/npp.h
-rw-r--r-- 1 mahmood mahmood 2864 Dec 16 18:24 /home/mahmood/cuda-10.1.168/include/npp.h
我该如何解决?
这不是真正的 makefile 问题。
你有两个问题。首先,您不能通过用逗号分隔它们来将多个路径传递给 -I
选项,例如 -I<dir1>,<dir2>
。您必须使用多个 -I
选项,例如 -I<dir1> -I<dir2>
.
其次,~
是一个特殊字符,在调用编译器之前被shell展开,shell不会在命令行的任何地方展开 ~
。例如,如果您 运行 echo foo~bar
甚至 echo foo~/bar
,则 shell 不会将 ~
视为对您的主目录的引用,也不会扩展它。只有当它是单词中的 first 字符时才会被特殊对待。您需要使用 $HOME
环境变量,或者您需要在 -I
和目录之间添加一个 space,以便 ~
是单词中的第一个字符: -I$HOME/<dir1> -I$HOME/<dir2>
或 -I ~/<dir1> -I ~/<dir2>
.
如果您使用 $HOME
,请记住您需要在制作配方中转义 $
。