장르가 다를 때 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 링크 편집 줄 끝에 추가됩니다 . 이제 압축된 종속성은 동적으로 연결됩니다. 이는 메모리를 절약하고 보안 업데이트가 나올 때 올바른 작업을 수행하므로 정확히 원하는 것입니다.

관련 정보