二、Emscripten
emcc -Oz --memory-init-file 1 --llvm-lto 1 emcc_crypto.c md5.c blowfish.c -o emcc_crypto.js
-s NO_FILESYSTEM=1 -s EXPORTED_RUNTIME_METHODS="['ccall', 'getValue', 'Pointer_stringify', '_free']"
-s EXPORTED_FUNCTIONS="['_getMD5', '_encryptBlowfish', '_decryptBlowfish']"
输出: emcc_md5.js 文件即为c文件转化后的js文件
编译选项参考:
https://kripken.github.io/emscripten-site/docs/tools_reference/emcc.html#emcc-o1
-Oz : 压缩文件,减小文件体积
--memory-init-file 0 : 编译结果不要产生.mem文件
--memory-init-file 1 : 产生.mem文件,减小生成的文件大小,最后在文件里面去掉
-s EXPORTED_FUNCTIONS : 提供C接口,供js端调用
调试指令:
emcc -Oz --memory-init-file 0 testmd5.c md5.c -o emcc_md5.html
在主c文件中,在main函数中用printf打印出日志
三、Linux Gcc
gcc testmd5.c md5.c -fPIC -shared -o md5.so
升级gcc版本后,cmake编译不过时,加上以下编译参数:
cmake -D CMAKE_C_COMPILER=/usr/local/bin/gcc -D CMAKE_CXX_COMPILER=/usr/local/bin/g++ .
cmake 测试例子:http://blog.csdn.net/bobsweetie/article/details/51762993
网友评论