gpt4 book ai didi

c - 生成文件的多个额外标志

转载 作者:行者123 更新时间:2023-12-04 23:21:48 25 4
gpt4 key购买 nike

所以有这个图书馆正在尝试使用ffmpeg.js我正在定制 Makefile .我已经完成了我想做的所有事情,但是在构建时,我收到了错误 ERROR: opus not found using pkg-config .现在我有两个问题:--extra-cflags="-s USE_ZLIB=1 -I../lame/dist/include -I../libvpx/dist/include"此配置最初是 --extra-cflags="-s USE_ZLIB=1 -I../lame/dist/include"但我想包括两个文件夹,所以合并是正确的,或者那是我出错的地方。
完整的Makefile如下(与存储库中的原始版本相比有很多更改),我做错了什么吗?

PRE_JS = build/pre.js
POST_JS_SYNC = build/post-sync.js

COMMON_FILTERS = aresample scale crop overlay hstack vstack
COMMON_DEMUXERS = matroska ogg mov mp3 wav image2 concat
COMMON_DECODERS = vp8 vp9 h264 vorbis opus mp3 aac pcm_s16le mjpeg png

COMMON_BSFS = vp9_superframe

MUXERS = mp4 mp3 webm ogg null
ENCODERS = libx264 libmp3lame aac libvpx_vp8 libopus
FFMPEG_BC = build/ffmpeg/ffmpeg.bc
FFMPEG_PC_PATH = ../x264/dist/lib/pkgconfig
SHARED_DEPS = \
build/lame/dist/lib/libmp3lame.so \
build/x264/dist/lib/libx264.so \
build/opus/dist/lib/libopus.so \
build/libvpx/dist/lib/libvpx.so

all: ffmpeg.js

clean: clean-js \
clean-opus clean-libvpx clean-lame \
clean-x264 clean-ffmpeg
clean-js:
rm -f ffmpeg*.js
clean-opus:
cd build/opus && git clean -xdf
clean-libvpx:
cd build/libvpx && git clean -xdf
clean-lame:
cd build/lame && git clean -xdf
clean-x264:
cd build/x264 && git clean -xdf
clean-ffmpeg:
cd build/ffmpeg-mp4 && git clean -xdf

build/opus/configure:
cd build/opus && ./autogen.sh

build/opus/dist/lib/libopus.so: build/opus/configure
cd build/opus && \
emconfigure ./configure \
CFLAGS=-O3 \
--prefix="$$(pwd)/dist" \
--disable-static \
--disable-doc \
--disable-extra-programs \
--disable-asm \
--disable-rtcd \
--disable-intrinsics \
--disable-hardening \
--disable-stack-protector \
&& \
emmake make -j && \
emmake make install

build/libvpx/dist/lib/libvpx.so:
cd build/libvpx && \
git reset --hard && \
patch -p1 < ../libvpx-fix-ld.patch && \
emconfigure ./configure \
--prefix="$$(pwd)/dist" \
--target=generic-gnu \
--disable-dependency-tracking \
--disable-multithread \
--disable-runtime-cpu-detect \
--enable-shared \
--disable-static \
\
--disable-examples \
--disable-docs \
--disable-unit-tests \
--disable-webm-io \
--disable-libyuv \
--disable-vp8-decoder \
--disable-vp9 \
&& \
emmake make -j && \
emmake make install

build/lame/dist/lib/libmp3lame.so:
cd build/lame/lame && \
git reset --hard && \
patch -p2 < ../../lame-fix-ld.patch && \
emconfigure ./configure \
CFLAGS="-DNDEBUG -O3" \
--prefix="$$(pwd)/../dist" \
--host=x86-none-linux \
--disable-static \
\
--disable-gtktest \
--disable-analyzer-hooks \
--disable-decoder \
--disable-frontend \
&& \
emmake make -j && \
emmake make install

build/x264/dist/lib/libx264.so:
cd build/x264 && \
emconfigure ./configure \
--prefix="$$(pwd)/dist" \
--extra-cflags="-Wno-unknown-warning-option" \
--host=x86-none-linux \
--disable-cli \
--enable-shared \
--disable-opencl \
--disable-thread \
--disable-interlaced \
--bit-depth=8 \
--chroma-format=420 \
--disable-asm \
\
--disable-avs \
--disable-swscale \
--disable-lavf \
--disable-ffms \
--disable-gpac \
--disable-lsmash \
&& \
emmake make -j && \
emmake make install

FFMPEG_COMMON_ARGS = \
--cc=emcc \
--ranlib=emranlib \
--enable-cross-compile \
--target-os=none \
--arch=x86 \
--disable-runtime-cpudetect \
--disable-asm \
--disable-fast-unaligned \
--disable-pthreads \
--disable-w32threads \
--disable-os2threads \
--disable-debug \
--disable-stripping \
--disable-safe-bitstream-reader \
\
--disable-all \
--enable-ffmpeg \
--enable-avcodec \
--enable-avformat \
--enable-avfilter \
--enable-swresample \
--enable-swscale \
--disable-network \
--disable-d3d11va \
--disable-dxva2 \
--disable-vaapi \
--disable-vdpau \
$(addprefix --enable-bsf=,$(COMMON_BSFS)) \
$(addprefix --enable-decoder=,$(COMMON_DECODERS)) \
$(addprefix --enable-demuxer=,$(COMMON_DEMUXERS)) \
--enable-protocol=file \
$(addprefix --enable-filter=,$(COMMON_FILTERS)) \
--disable-bzlib \
--disable-iconv \
--disable-libxcb \
--disable-lzma \
--disable-sdl2 \
--disable-securetransport \
--disable-xlib \
--enable-zlib

build/ffmpeg/ffmpeg.bc: $(SHARED_DEPS)
cd build/ffmpeg-mp4 && \
EM_PKG_CONFIG_PATH=$(FFMPEG_PC_PATH) emconfigure ./configure \
$(FFMPEG_COMMON_ARGS) \
$(addprefix --enable-encoder=,$(ENCODERS)) \
$(addprefix --enable-muxer=,$(MUXERS)) \
--enable-gpl \
--enable-libmp3lame \
--enable-libx264 \
--enable-libopus \
--enable-libvpx \
--extra-cflags="-s USE_ZLIB=1 -I../lame/dist/include -I../libvpx/dist/include" \
--extra-ldflags="-L../lame/dist/lib -L../libvpx/dist/lib" \
&& \
emmake make -j && \
cp ffmpeg ffmpeg.bc

EMCC_COMMON_ARGS = \
-O3 \
--closure 1 \
--memory-init-file 0 \
-s WASM=0 \
-s WASM_ASYNC_COMPILATION=0 \
-s ASSERTIONS=0 \
-s EXIT_RUNTIME=1 \
-s NODEJS_CATCH_EXIT=0 \
-s NODEJS_CATCH_REJECTION=0 \
-s TOTAL_MEMORY=67108864 \
-lnodefs.js -lworkerfs.js \
--pre-js $(PRE_JS) \
-o $@

ffmpeg.js: $(FFMPEG_BC) $(PRE_JS) $(POST_JS_SYNC)
emcc $(FFMPEG_BC) $(SHARED_DEPS) \
--post-js $(POST_JS_SYNC) \
$(EMCC_COMMON_ARGS) -O2
我试图实现的是将一些 webm 编码器和复用器组合到 mp4 模块中,因此我只将一个模块用于所有 webm 和 mp4 格式类型。
还有一件事要了解我,整个 Makefile 和 C 以及构建它对我来说是全新的领域,我只是做了我认为正确的事情,在此先感谢。

最佳答案

你有坚实的目标很好。没有这些,问题就更难了。
您需要做的是了解您将运行的命令,而无需 make 或 Makefiles,以实现这些目标,以及在此过程中创建的文件。有了这个,您可以将这些命令编码为格式

file_to_be_created:source_file_1 source_file_2 source_file_3
<tab>command to be executed
<tab>second command to be executed
标签是make历史上一个错误选择的不幸副作用。
有了这个,您可以修改 Makefile。如果您有一个从其他源构建的源,请使用上述模式制定两个“make”规则,make 将正确确定构建顺序并运行所需的命令。如果 make 确定一个 crated 文件比它的源文件更新,它将跳过构建创建的文件。
如您所见,虽然 make 不是很复杂,但它对您了解必须运行的命令几乎没有帮助。也许你已经认识他们了;但是,如果您不这样做,我会利用您的个人知识以及您可以从 Makefile 中读出的内容并将它们结合起来,看看您是否可以制定您需要的 make 文件规则。
最初,我会通过创建新规则和新文件来做到这一点,因为如果你违反了你需要的规则,很可能直到很久以后你才会发现。一旦你建立了一些东西,你就可以审查是否应该将你的规则纳入一些现有的规则中。
祝你好运!

关于c - 生成文件的多个额外标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64514061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com