0

私は VisualStudio の Windows で ffmpeg をコンパイルしようとしていますが、ステップの 1 つは、この投稿に従って clang を使用して c99-to-c89コードをコンパイルすることです。なんとかclang.exeを作成できましたが、それを使用してc99からc89へのコードをコンパイルするにはどうすればよいですか?

c99-to-c89 の makefile を少し変更したので、CC変数は cl.exe ではなく、clang.exe コンパイラを指すようになりました。

EXT=.exe

all: c99conv$(EXT) c99wrap$(EXT)

CLANGDIR=C:/build
CC=C:/build/bin/Release/clang.exe
CFLAGS=-nologo -Z7 -D_CRT_SECURE_NO_WARNINGS=1 -Dpopen=_popen -Dunlink=_unlink -Dstrdup=_strdup -Dsnprintf=_snprintf -I. -I$(CLANGDIR)/tools/clang/include
LDFLAGS=-nologo -Z7 $(CLANGDIR)/lib/Release/libclang.lib

clean:
    rm -f c99conv$(EXT) c99wrap$(EXT) convert.o compilewrap.o
    rm -f unit.c.c unit2.c.c

test1: c99conv$(EXT)
    $(CC) -P unit.c -Fiunit.prev.c
    ./c99conv unit.prev.c unit.post.c
    diff -u unit.{prev,post}.c

test2: c99conv$(EXT)
    $(CC) -P unit2.c -Fiunit2.prev.c
    ./c99conv unit2.prev.c unit2.post.c
    diff -u unit2.{prev,post}.c

test3: c99conv$(EXT)
    $(CC) $(CFLAGS) -P -Ficonvert.prev.c convert.c
    ./c99conv convert.prev.c convert.post.c
    diff -u convert.{prev,post}.c

c99conv$(EXT): convert.o
    $(CC) -Fe$@ $< $(LDFLAGS) $(LIBS)

c99wrap$(EXT): compilewrap.o
    $(CC) -Fe$@ $< $(LDFLAGS)

%.o: %.c
    $(CC) $(CFLAGS) -Fo$@ -c $<

しかし、makeコマンドを実行すると、 clang: error: unsupported use of internal gcc -Z option '-Z7'. CFLAGSandに問題があるとLDFLAGS思いますが、makefileとclangの知識が不足しているため、修正方法がわかりません。

4

2 に答える 2

3

それでも必要な場合は、libavの担当者から、バイナリをダウンロードするためのこのリンクが提供されました。c99conv.exec99wrap.exemakedef

于 2012-11-27T15:30:28.510 に答える
1

c99conv は msvc コンパイラでコンパイルする必要がありますが、LLVM のライブラリを使用します。実際、コンバーターは C99 ソースのパーサーとして clang を使用します。

したがって、clang は MSVC でコンパイルする必要があります (MSVC は libclang を c99conv とリンクするため)。

したがって、リンクする記事からビルド手順を導くだけです。

  • ビジュアル スタジオ コマンド プロンプトを実行します。
  • mingw から msys シェルを実行します。
  • 環境に合わせて Makefile.w32 を調整する
  • Makefile.w32 で c99conv をコンパイルします。

make -f Makefile.w32
于 2012-12-19T06:42:59.053 に答える