配置安装路径:prefix=[PREFIX] 不完全理解

wha*_*ace 6 c++ ffmpeg path set prefix

我认为这只是一个一般的 C++ 问题:

我正在尝试使用 gnu c++ 编译器在 Linux Fedora 上编译本地版本的 ffmpeg。我的源代码位于以下一堆文件夹中:

~/<username>/Downloads/Code/ffmpeg_sources/
Run Code Online (Sandbox Code Playgroud)

这是我尝试设置配置标志以将构建安装到不在该树下而是在具有本地共享库的根级目录中的目标:

/usr/local/
Run Code Online (Sandbox Code Playgroud)

配置文件开头附近有以下部分:

Standard options:

 --prefix=PREFIX          install in PREFIX []
 --bindir=DIR             install binaries in DIR [PREFIX/bin]
 --datadir=DIR            install data files in DIR [PREFIX/share/ffmpeg]
 --docdir=DIR             install documentation in DIR [PREFIX/share/doc/ffmpeg]
 --libdir=DIR             install libs in DIR [PREFIX/lib]
 --shlibdir=DIR           install shared libs in DIR [PREFIX/lib]
 --incdir=DIR             install includes in DIR [PREFIX/include]
 --mandir=DIR             install man page in DIR [PREFIX/share/man]
 --enable-rpath           use rpath to allow installing libraries in paths
                          not part of the dynamic linker search path
Run Code Online (Sandbox Code Playgroud)

我可能完全误解了这一点,但我认为设置一个像

--prefix=/usr/local
Run Code Online (Sandbox Code Playgroud)

或者

--prefix=[/usr/local]
Run Code Online (Sandbox Code Playgroud)

可能会起作用,但似乎不起作用,因为一旦 ./config, make&&make install 完成,它已经完成了一堆事情,但目标上没有安装任何东西。源目录中构建了很多新的可执行文件,因此推测构建正在工作,但我只是错误地指定了路径?同一问题的一部分是,一旦我设置了

--prefix=[PREFIX]
Run Code Online (Sandbox Code Playgroud)

正确,我需要设置所有进一步的

--datadir, --libdir
Run Code Online (Sandbox Code Playgroud)

等等或者第一个 --prefix 值是否足够?

上面的配置语法试图向我展示什么?

Gal*_*lik 5

它应该是第一个--prefix=/usr/local,但要在该位置安装文件,您需要root权限。因此,您需要更改为root帐户,或者如果您是aka则su使用. 仅在安装阶段执行此操作,不要那样构建。sudosudo usersudo make install

Also/usr/local通常是默认安装位置,因此您通常不需要指定它。通常,您仅用于--prefix安装到不同的位置,例如--prefix=/opt您的文件夹:--prefix=$HOME/3rdparty

顺便说一句,如果您安装到文件夹中,则不需要root权限。