我需要从 Rust 调用 c 方法。第一步,我使用 gcc 生成这样的 so 文件:
gcc -shared *.o -o libsynctex_parser.so
但是当我构建rust项目时,它显示c源代码缺少一些函数,缺少的函数来自zlib。那么是否可以将zlib打包到distate so中呢?我已经尝试过这个,但似乎不起作用:
gcc -shared *.o -o libsynctex_parser.so -lz
答案1
gcc -shared *.o -o libsynctex_parser.so
您可以获取压缩库源并对其进行编译,然后它们将成为*.o
对象的一部分。同样,您可以使用ar x libz.a
. Rust 链接编辑将成功。压缩依赖将被静态链接。
但这不是你想要的。
像以前一样继续生成 libsynctex_parser.so 。附加-lz
到 Rust 链接编辑行的末尾。现在,压缩依赖项将被动态链接,这正是您想要的,因为它可以节省内存,并且在安全更新出现时会做正确的事情。