ジャンルが異なるときにgccを使用してzlibをリンクできますか?

ジャンルが異なるときにgccを使用してzlibをリンクできますか?

Rustでcメソッドを呼び出す必要があります。最初のステップでは、gccを使用してsoファイルを生成します。

gcc -shared *.o -o libsynctex_parser.so

ただし、Rustプロジェクトをビルドすると、cソースコードに一部の機能が欠落しており、欠落している機能はzlibからのものとしてマークされます。それでは、zlibをゾーンにパッケージ化することは可能ですか?私はこれを試しましたがうまくいかないようです:

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の生成を進めます。-lzRustリンクは編集行の末尾に追加されます。圧縮された依存関係は動的にリンクされます。これは、メモリを節約し、セキュリティ更新プログラムが出たときに正しい操作を実行するので、正確に望むものです。

関連情報