编译

作者: 南谣077 | 来源:发表于2019-06-27 15:29 被阅读0次

    二、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

    相关文章

      网友评论

          本文标题:编译

          本文链接:https://www.haomeiwen.com/subject/jtsrcctx.html