Development Tip

#pragma comment (lib,“xxx.lib”) Linux에서 동등합니까?

yourdevel 2020. 12. 31. 23:03
반응형

#pragma comment (lib,“xxx.lib”) Linux에서 동등합니까?


라는 정적 라이브러리 파일 이 있습니다. 라이브러리에 연결하는 데 libunp.a사용할 수 있습니다 gcc -lunp xx.

#pragma comment(lib,"xxx.lib")Microsoft C / C ++ 컴파일러에 라이브러리를 포함 하도록 지시 하는 사용할 수 있습니다 . Linux / GCC에서 어떻게 할 수 있습니까?


단순한; 당신은 할 수 없습니다. GCC에는 이와 동등한 것이 없습니다. -l을 gcc 매개 변수로 지정하고, 링커 스크립트를 작성하고,을 호출하고 ld, 911을 호출하십시오.

그런 pragma가 말이되는 것도 아닙니다. 연결 단계에서 라이브러리를 지정해야합니다. 이러한 정보는 단순히 번역 단위 내부에 속하지 않습니다. 번역 단위는 연결 단계 없이도 전처리, 컴파일 및 조립할 수 있습니다. Visual Studio에서 사용하는 도구 모음은 이것이 브레인 데드이고 항상 연결을 수행 하기 때문에이를 허용합니다 .

지루한 타이핑을 저장하고 프로젝트를위한 MakeFile을 만들고 싶을 수도 있습니다 : GNU Make Manual


pragma에 대한 GCC 매뉴얼 페이지에 동등한 pragma에 대한 언급이없는 것 같습니다 .

GCC가 소스 코드에서 링크를 지원하지 않는 이유 중 하나는 올바른 링크 가 링크 순서에 따라 달라진다 는 것입니다 . 컴파일 순서에 관계없이 연결 순서가 올바르게 발생하는지 확인해야합니다. 그렇게 많은 작업을 수행하려는 경우 명령 줄 (또는 다른 방법으로)에 링커 인수를 전달하는 것이 좋습니다.


연결 단계에서 라이브러리를 지정해야합니다. 이러한 정보는 단순히 번역 단위 내부에 속하지 않습니다. 번역 단위는 연결 단계 없이도 전처리, 컴파일 및 조립할 수 있습니다.

단순히 #pragma comment(lib,"xxx.lib")소스 파일에 있다고해서 컴파일러가이를 사용한다는 의미는 아닙니다. 사실, 주석으로 들어가고 이후 링커에서 사용됩니다. * nix와 크게 다르지 않습니다.


이 GCC 플래그를 사용하여 알 수없는 pragma에 대한 오류를 생성합니다. 컴파일러가 이해하는지 빠르게 알려줍니다.

-Werror=unknown-pragmas

참조 URL : https://stackoverflow.com/questions/1685206/pragma-commentlib-xxx-lib-equivalent-under-linux

반응형