当genreate时是否可以使用gcc链接zlib

当genreate时是否可以使用gcc链接zlib

我需要从 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 链接编辑行的末尾。现在,压缩依赖项将被动态链接,这正是您想要的,因为它可以节省内存,并且在安全更新出现时会做正确的事情。

相关内容