BPG Emscripten 编译错误

Posted

技术标签:

【中文标题】BPG Emscripten 编译错误【英文标题】:BPG Emscripten compile error 【发布时间】:2015-02-27 14:12:59 【问题描述】:

我正在尝试编译BPG 解码器以获得等效的javascript(是的,我知道作者已经提供了一个);这是通过 Emscripten 完成的。不幸的是,我收到以下错误:

emcc -Os -Wall -MMD -fno-asynchronous-unwind-tables -fdata-sections -ffunction-sections -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -fomit-frame-pointer -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_REENTRANT -I. -DCONFIG_BPG_VERSION=\"0.9.5\" -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DHAVE_AV_CONFIG_H -std=c99 -D_GNU_SOURCE=1 -DUSE_VAR_BIT_DEPTH -c -o libavutil/buffer.js.o libavutil/buffer.c
In file included from libavutil/buffer.c:22:
In file included from libavutil/atomic.h:29:
libavutil/atomic_gcc.h:54:12: error: cannot compile this atomic library call yet
    return __atomic_add_fetch(ptr, inc, __ATOMIC_SEQ_CST);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
ERROR    root: compiler frontend failed to generate LLVM bitcode, halting
Makefile:202: recipe for target 'libavutil/buffer.js.o' failed
make: *** [libavutil/buffer.js.o] Error 1

关于如何解决它的任何想法?

【问题讨论】:

【参考方案1】:

问题是由 Ubuntu 14.10 附带的 Emscripten 编译器引起的;我已经升级了,现在一切正常:

$ ./emcc -v
emcc (Emscripten GCC-like replacement + linker emulating GNU ld ) 1.29.0
clang version 3.4

这里需要说明的是,我还需要更新版本的libpng。

【讨论】:

以上是关于BPG Emscripten 编译错误的主要内容,如果未能解决你的问题,请参考以下文章

Emscripten 交叉编译的 CPython 中出现奇怪的导入错误

为啥 emscripten 不编译我的函数?

Emscripten:我如何编译带有像 immintrin.h 这样的内在头文件的 c 文件?

错误:未定义符号:gzclose opencv emscripten

Emscripten:致命错误:找不到“tr1/unordered_map”文件

将 emscripten 与 opengl 着色器一起使用