使用 --arch=x86_64 编译的 ffmpeg 总是使用 x86 编译

Gue*_*OCs 1 ffmpeg compiler-errors compilation

我正在编译 ffmpeg

./configure \
      --prefix=${BUILD_DIR}/desktop/${ARCH} \
      --extra-cflags="-I$HOME/ffmpeg_build/include" \
      --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
      --enable-shared \
      #--extra-cflags="-I/opt/intel/mediasdk/include" \
      #--extra-ldflags="-L/opt/intel/mediasdk/lib" \
      #--extra-ldflags="-L/opt/intel/mediasdk/plugins" \
      --arch=${ARCH} \
      --enable-libmfx \
      --enable-vaapi \
      --enable-opencl \
      --disable-debug \
      --enable-nvenc \
      --enable-cuda \
      --enable-cuvid \
      #--enable-libvorbis \
      --enable-libvpx \
      --enable-libdrm \
      --enable-gpl \
      --enable-runtime-cpudetect \
      --enable-libfdk-aac \
      --enable-libx264 \
      --enable-libx265 \
      --enable-openssl \
      --enable-pic \
      --extra-libs="-lpthread -libm -libc -lz -ldl" \
      --enable-nonfree 
Run Code Online (Sandbox Code Playgroud)

在那里ARCH=x86_64,但它总是给我这个配置中的输出:

install prefix            /home/deps/ffmpeg/build/desktop/x86_64
source path               .
C compiler                gcc
C library                 glibc
ARCH                      x86 (generic)
...
Run Code Online (Sandbox Code Playgroud)

uname -m 说我的机器是 x86_64,所以我不想只在 x86 上构建。

怎么了?

Ale*_*kov 5

别担心你有一个 x86_64 ffmpeg。提到的消息对于 x86_64 编译是正常的,因为 ffmpegconfigure将所有 x86 架构组合在一个“x86”架构中:

case "$arch" in
...
    i[3-6]86*|i86pc|BePC|x86pc|x86_64|x86_32|amd64)
        arch="x86"
Run Code Online (Sandbox Code Playgroud)

并将 x86_64 放在subarch关卡中

您可以使用file命令来检查生成的 .so 文件是什么架构:https : //superuser.com/questions/791506/how-to-determine-if-a-linux-binary-file-is-32-bit-or -64 位