2008-09-02 4 views
2

공유 작업 영역에서 사용되는 도구를 작성합니다. 이 공간에서 여러 OS가 작동하기 때문에 일반적으로 Python을 사용하고 여러 컴퓨터에 설치된 버전을 표준화합니다. 그러나 C 언어로 몇 가지를 작성하고 싶다면 응용 프로그램을 파이썬 스크립트로 묶어서 운영 체제를 감지하고 올바른 버전의 C 응용 프로그램을 실행할 수 있는지 궁금합니다. 각 플랫폼은 GCC를 사용할 수 있으며 동일한 쉘을 사용합니다.공유 다중 플랫폼 POSIX 환경에서 C 사용

C 코드를 타임 스탬프와 비교하여 로컬 ~/bin 사용자에게 컴파일되도록하는 것이 하나의 아이디어였습니다. 따라서 각 코드가 컴파일 될 때마다 컴파일되지만 코드가 업데이트 될 때만 컴파일됩니다. 또 다른 방법은 각 플랫폼에 대해 컴파일하고 래퍼 스크립트가 적절한 실행 파일을 선택하도록하는 것입니다.

허용/안정 프로세스가 있습니까? 어획량이 있습니까? 대안이 있습니까 (네이티브 C 코드를 절대적으로 사용해야한다고 가정 할 때)?

설명 : ABI를 공유하지 않는 여러 OS가 관련되어 있습니다. 예 : OS X, 다양한 리눅스, BSD 등. 나는 공유 폴더에서 코드를 업데이트 할 수 있어야하고, 새로운 코드가 더 많거나 적게 즉각적으로 작동 할 수 있어야합니다. 바이너리 또는 소스 패키지를 배포하는 것이 이상적이지 않습니다.

답변

0

알다시피, 당신은 정적 연결을 봐야합니다.

요즘 우리 모두는 거대한 하드 드라이브를 가지고 있으며, 몇 메가 바이트 (libc를 들고 다니기위한 것)는 더 이상 큰 문제가 아닙니다.

chroot() jails에서 응용 프로그램을 실행하고 배포 할 수도 있습니다.

0

OS의 종류에 따라 시스템 클래스별로 패키지를 만드는 것이 좋습니다.

다른 모든 ABI 및 하드웨어 아키텍처를 공유하는 경우 정적 바이너리를 컴파일 할 수도 있습니다.

1

또한 autoconf를 사용하여 원본 양식으로 만 응용 프로그램을 배포 할 수 있습니다. :)

2

실행할 바이너리를 선택하기 위해 파이썬 인터프리터 인스턴스를 시작하면 필요한 것보다 훨씬 무거울 것이다. 별칭을 제공하는 셸 .rc 파일을 배포 할 것입니다.

/shared/bin/bin/toolname-mac,/share/bin/toolname-debian-x86,/shared/bin/toolname-netbsd-dreamcast 등 다양한 바이너리를 넣습니다. 공통 공유 셸 .rc 파일에서 OSX에서 별칭 toolname =/shared/bin/toolname-mac 등을 얻도록 플랫폼에 따라 별칭을 설정하는 논리를 지정합니다.

사용자가 별칭을 다시로드해야하기 때문에 항상 새로운 도구를 추가하는 경우에는이 기능이 작동하지 않습니다.

이렇게 도구를 배포하는 것은 좋지 않습니다. 도구의 새로운 빌드를 테스트하고 자격을 갖추려면 사용자에게 도구를 배포하는 데 필요한 추가 시간이 거의 필요하지 않은 충분한 시간과 노력이 필요합니다. 배포 시간을 줄이기 위해 최적화하는 것 같습니다. 실제 환경에서 신속하게 수행되는 도구를 교체하는 것은 도구를 작성하고 작성하는 데 문제가 발생하면 길고 혼란스러운 중단 시간을 초래할 가능성이 높습니다. 특히 미묘한 교차 플랫폼 문제가 발생할 때 특히 그렇습니다.

+1

파이썬 인터프리터는 무겁지 않습니다. 적어도 이미 nix 환경에서 광범위하게 사용하고있는 것은 아닙니다. 시작 시간은 무시할 만합니다. 아마도 50ms입니다. – postfuturist

관련 문제