首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用emmake编译libpd (Emscripten SDK)

无法使用emmake编译libpd (Emscripten SDK)
EN

Stack Overflow用户
提问于 2018-05-22 15:57:55
回答 1查看 728关注 0票数 3

我正在尝试使用emscripten sdk将libpd编译成javascript或webassembly。根据一些文档,如果有Makefile,可以使用emmake make编译(不使用emconfigure,因为没有./configure文件),但我得到以下错误:

代码语言:javascript
复制
/home/ian/Documents/emsdk/emscripten/1.37.37/emcc.py -DPD -DHAVE_UNISTD_H -DUSEAPI_DUMMY -I./pure-data/src -I./libpd_wrapper -I./libpd_wrapper/util -Wno-int-to-pointer-cast -Wno-pointer-to-int-cast -fPIC -I"/usr/lib/jvm/default-java/include/linux" -DHAVE_LIBDL -ffast-math -funroll-loops -fomit-frame-pointer -O3 -DLIBPD_EXTRA      -c -o pure-data/src/d_array.o pure-data/src/d_array.c
pure-data/src/d_array.c:523:2: error: No byte order defined
#error No byte order defined
 ^
1 error generated.
ERROR:root:compiler frontend failed to generate LLVM bitcode, halting
<integrado>: fallo en las instrucciones para el objetivo 'pure-data/src/d_array.o'
make: *** [pure-data/src/d_array.o] Error 1

有什么想法吗?你认为编译这个库是可能的吗?

更新:在按照@zakki的回答中的建议调整了每个抱怨文件后,我得到了另一个错误:

代码语言:javascript
复制
libpd_wrapper/util/ringbuffer.c:18:12: fatal error: 'stdatomic.h' file not found
  #include <stdatomic.h>

该文件包含以下内容:

代码语言:javascript
复制
#if __STDC_VERSION__ >= 201112L // use stdatomic if C11 is available
  #include <stdatomic.h> // HERE IS WHERE ERROR GOES
  #define SYNC_FETCH(ptr) atomic_fetch_or((_Atomic int *)ptr, 0)
  #define SYNC_COMPARE_AND_SWAP(ptr, oldval, newval) \
          atomic_compare_exchange_strong((_Atomic int *)ptr, &oldval, newval)
//Some other definitions that I didn't put here

前段时间我读了一些关于C++11这个问题的帖子,我怎么解决这个问题呢?

更新2:添加&& !defined(__EMSCRIPTEN__)后,现在可以编译,但我收到了这个我不理解的警告:

警告:root: Emscripten当前不支持动态库(.so、.dylib、.dll)。出于构建系统仿真的目的,Emscripten现在将生成一个后缀为“.so”的静态库文件(.bc)。作为最佳实践,请调整您的构建系统,通过将输出后缀设置为‘.bc’来直接生成静态LLVM位代码库。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-22 17:06:40

Emscripten有endian.h。因此,将defined(__EMSCRIPTEN__)添加到ifdef。

代码语言:javascript
复制
#if defined(__linux__) || defined(__CYGWIN__) || defined(__GNU__) || \
    defined(ANDROID) || defined(__EMSCRIPTEN__)
#include <endian.h>
#endif

其次,它看起来像Emscripten bug

代码语言:javascript
复制
#if __STDC_VERSION__ >= 201112L && !defined(__EMSCRIPTEN__)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50462577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档