내 정적 사용자 라이브러리에서 pthread를 사용하고 싶지만 종속 프로젝트는 '-lpthread'를 사용하는 각 프로젝트에 추가하지 않으면 연결되지 않습니다.gcc를 사용하면 정적 라이브러리에 -lpthread 라이브러리를 어떻게 포함시킬 수 있습니까?
내 사용자 라이브러리에 '-lpthread'를 지정하고 싶습니다. 사실, 나는 그 일을했지만 아무 것도하지 않습니다. 나는 아직도 그렇지 않으면 내가
Invoking: GCC C++ Linker
g++ <....>
/usr/bin/ld: /home/xxx/git/xxx/xxx.CUtil/Debug/libxxx.CUtil.a(EzyThread.o): undefined reference to symbol '[email protected]@GLIBC_2.2.5'
를 얻을 나는 또한 그것을 사용하여 프로젝트의 종속 관계를 포함해야하는 경우 IMO는, 내 자신의 사용자 라이브러리의 목적을 패배 종속 프로젝트 '-lpthread'추가해야합니다; pthread 대신에 다른 내부 메커니즘을 사용하기로 결정했다면 어떻게 될까요?
나는 내가 원하는 것을 MS VC에
#pragma comment(lib, "SomeOtherStuff.lib")
를 사용했습니다 -하지만 난 GCC 환경에서 지금입니다. 나는
#pragma comment(lib, "xxx.lib") equivalent under Linux?을 체크 아웃했는데 감정이 좋고 사용 가능한 정보가 부족한 것으로 보였다. gcc 나 다른 의존적 인 프로젝트에서 '-lpthread'를 지정하지 않으려면 비슷한 방법이 있습니까? 나는 C가 OOP가 아니라 각 종속성이 사용자 라이브러리가 구현되는 방법을 알아 내야 만하는 이유를 알고 있습니까?
(#pragma 메소드와 같은 것이 '-lpthread'보다 길지 않도록하십시오.) 사용자 라이브러리의 #pragma 또는 이에 해당하는 메커니즘은 한 번 입력되었지만 '-lpthread'는 잠재적으로 수백 번이 필요하며 사용자 라이브러리의 기본 메커니즘이 변경되면 여러 번 변경해야합니다.)
AFAIK 할 수 없습니다. – immibis
이런 종류의 것은 일반적으로 빌드 시스템에 위임됩니다. –
'.o' 파일의 압축을 풀고 lib 도움말에 추가하겠습니까? 'ar t/usr/lib/x86_64-linux-gnu/libpthread.a', [man ar] (https://linux.die.net/man/1/ar) –