programing

g++ 링커: 정적 라이브러리가 있는 경우 정적 링크를 강제로 적용하시겠습니까?

newsource 2022. 7. 28. 23:56

g++ 링커: 정적 라이브러리가 있는 경우 정적 링크를 강제로 적용하시겠습니까?

나는 많은 도서관을 링크하는 프로그램을 가지고 있다. g++디폴트로는는 대응하는 아카이브가 존재하는 경우에도 공유 라이브러리에 링크하는 것을 선호합니다.

정적 아카이브가 존재하는 경우 동적 라이브러리보다 정적 아카이브를 선호하도록 이 기본 설정을 변경하려면 어떻게 해야 합니까?

주의: 저는-static모든 라이브러리의 정적 아카이브를 검색하려고 합니다.이러한 아카이브는, 내가 원하는 것이 아닙니다.

g++ -Wl,-Bstatic -lz -lfoo -Wl,-Bdynamic -lbar -Wl,--as-needed

링크하다zlib그리고.libfoo스태틱으로 되어 있습니다.libbardynamic으로 지정합니다.--as-needed사용되지 않는 동적 라이브러리가 모두 폐기됩니다.

시스템 라이브러리를 포함한 하나 또는 두 개의 라이브러리만 다른 라이브러리와 정적으로 링크하는 경우, 대부분의 경우 정적인 라이브러리를 단순히 풀네임으로 참조하는 것이 더 쉽습니다.사용하는 것보다-l그리고.-Lg++로 라이브러리를 해결하려면 , simpy로 라이브러리의 풀 패스를 입력으로 추가합니다.위의 g++ 명령어를 사용하여main.o응용 프로그램 메인 프로그램을 static libz 및 libfoo, dynamic libbar 및 libglib 등에 적용합니다.:

    g++ main.o /usr/lib/libz.a /usr/lib/libfoo.a -lbar

8월 17일 편집 3일: 이 답변에 대해 조금 전 우연히 알게 되었습니다.상세한 내용은 다른 방법을 제시합니다.-l:라이브러리를 직접 지정합니다.

언급URL : https://stackoverflow.com/questions/3698321/g-linker-force-static-linking-if-static-library-exists