2013-07-17 1 views
2

내 사용자는 자신이 소유하지 않은 컴퓨터에 Linux 스레드 빌딩 블록을 설치해야한다는 불평을합니다. 많은 호스트는 최종 사용자에게 인텔 스레드 빌딩 블록을 설치하지 않으려 고합니다. 따라서 정적 버전의 내 동적 라이브러리/플러그인/모듈/확장 (corrct 용어는 플러그 인 C++ 프로그램/dll/so를위한 것임).linux (CentOS)의 g ++에 대해/MT (VC++)와 동일한 스위치가 무엇입니까?

나는 Windows 용 난 그렇게 내 프로그램 종속성이 없습니다 (그러나 것 대신 기본/MD 스위치 (멀티 스레드 DLL)의/MT (멀티 스레드)를 사용한다는 것을 발견, 창문 동시 용기를 가지고 그래서 나는 TBB를 사용할 필요가 없다.) 난 그냥 리눅스에 대한 상응하는 무엇

을 알아낼 수 없습니다? 모든 옵션을 알아낼 수 컨버터를 메이크하는의 .sln 어쩌면

또는 있는가?

저는 Windows에서 개발하고 있지만 대부분의 최종 사용자는 리눅스를 사용하기 때문에 이들이 부담을 가지지 않도록하고 오픈 소스를 사용하여 매우 편안하게하고 싶습니다.

+0

/MTD는 ** 런타임 라이브러리를합니다 (** 다중 스레드 디버그를 사용하도록 링커에 지시 [참조 MSDN (http://msdn.microsoft.com/en-us/library/2kzt1wy3 (V = 대 .71) .aspx)). – Casey

+0

@Casey 죄송합니다./MD : S – Gizmo

+0

그래서 누군가가 라이브러리 종속성을 실행 파일에 연결하는 스위치를 알고 있습니까? – Gizmo

답변

1

은 Microsoft C++ 컴파일러의 /MT 플래그는 링커가 라이브러리 시간 실행 ++은 C와 C의 정적 버전에 연결됩니다. Microsoft는 런타임 라이브러리의 정적 및 동적 버전을 제공하므로이 옵션은 연결할 라이브러리 집합을 효과적으로 선택합니다. 이 플래그는 타사 라이브러리와의 연결에는 영향을주지 않습니다. 리눅스 측면에서

당신은 정적 라이브러리를 사용하도록 링커를 말할 -static 옵션이 있습니다. 이 옵션은 Windows와 마찬가지로 라이브러리 특정 적이 아니며 모든 라이브러리에 영향을 미칩니다. 그러나이 옵션을 사용하면 필요한 모든 라이브러리의 정적 버전을 제공해야하며 링커는 동적 라이브러리를 자동으로 변환하지 않습니다. 여기에는 시스템 라이브러리와 런타임 라이브러리가 포함되며, 정적 라이브러리로 항상 사용할 수있는 것은 아닙니다. 또한 인텔 TBB가 포함되어 있습니다. 인텔 TBB를 제공하지 않으면 정적 lib로 컴파일해야 할 수도 있습니다.

0

사용자가 Linux 컴퓨터에 스레딩 구성 요소 (TBB)를 설치해야한다는 것을 의미합니다. 인텔 TBB 기능을 사용하고 있고 클라이언트가 소스 코드를 컴파일해야하는 경우 인텔 TBB가 설치되어 있어야합니다. 다른 방법은 클라이언트 용 소스 코드를 컴파일하고 소스 코드가 아닌 솔루션 바이너리 만 제공하는 것입니다. 그러면 TBB를 설치할 필요가 없습니다.

+0

내 바이너리가 어떻게 든 시스템에 존재하는 TBB 라이브러리를 필요로하는 (아래 지정된대로 평가 라이센스 제외하고) 내가 당신에게 배포 할 수있는 비 독점적이고 양도 저작권 라이센스를 – Gizmo

+0

'인텔 보조금을 피하기 위해 원하는 것입니다 재배포 가능 항목 또는 그 일부를 귀하가 개발 한 제품 또는 응용 프로그램의 일부로 사용할 수 없습니다. "- [Intel에 tbb libs 및 dll을 재배포 할 수있는 링크] (http://software.intel.com/en-us/tags/21728). 이것으로 당신의 솔루션으로 Linux 플랫폼 용 TBB 라이브러리를 재배포 할 수 있습니다. –

+0

내 라이브러리와 정적으로 링크되도록하려는 것입니다. – Gizmo

관련 문제