IT

라이브러리를 정적으로 링크하도록 gcc에 직접 알리기

lottoking 2020. 8. 5. 07:37
반응형

라이브러리를 정적으로 링크하도록 gcc에 직접 알리기


어떤 라이브러리를 정적으로 연결 하려는지 -Wl,-Bstatic알려면 사용 하기 가 이상합니다 gcc. 결국 gcc라이브러리 ( -Ldir, -llibname) 와의 연결에 대한 다른 모든 정보를 직접 말하고 있습니다 .

어떤 라이브러리를 정적으로 링크 해야하는지 gcc 드라이버에 직접 알릴 수 있습니까?

설명 : 특정 라이브러리가 정적 버전에만있는 경우을 사용하지 않고 사용할 수 -Wl,-Bstatic있지만 gcc정적 라이브러리를 선호 한다는 것을 알고 싶습니다 . 또한 라이브러리 파일을 직접 지정하면 파일과 연결될 수 정적 정적 및 동적 라이브러리를 동일하게 유지하는 것을 선호합니다.


물론 -l:대신 사용할 수 있습니다 -l. -l:libXYZ.a를 들어와 연결합니다 libXYZ.a. 이지 주목 것에 lib반대로, 기입 -lXYZ하는 자동차가 확장 것이다 libXYZ.


연결 명령에 .a 파일을 추가 할 수 있습니다.

  gcc yourfiles /path/to/library/libLIBRARY.a

그러나 이것은 gcc 드라이버와 대화하는 것이 ld아니라 링커와 같은 옵션 -Wl,anything입니다.

gcc 또는 ld에게 "-Ldir -lLIBRARY"를 말하면 링커가 라이브러리의 정적 및 동적 버전을 모두 확인합니다 (프로세스를 볼 수 있음 -Wl,--verbose). 라이브러리 유형의 선택된 순서를 변경하려면 -Wl,-Bstatic을 사용할 수 있습니다 -Wl,-Bdynamic. 다음은 gnu LD 매뉴얼 페이지입니다 : http://linux.die.net/man/1/ld

프로그램을 lib1, lib3 동적 및 lib2와 정적으로 링크 된 다음 gcc 호출을 사용하십시오.

gcc program.o -llib1 -Wl,-Bstatic -llib2 -Wl,-Bdynamic -llib3

ld의 기본 설정이 동적 라이브러리 (Linux에 있음)를 사용하는 가정합니다.

참고 URL : https://stackoverflow.com/questions/6578484/telling-gcc-directly-to-link-a-library-statically

반응형