2009-10-08 3 views
3

Mac에서 포트란 코드를 컴파일하여 공유 라이브러리에 의존하지 않도록하고 싶습니다. 궁극적으로, 저는 바이너리를 다른 사람들에게 보내고 싶습니다. 프로세서가 올바른 아키텍처를 가지고 있다면, 그냥 작동시켜야합니다. 나는 g95와 ifort에 -static 플래그가 있다는 것을 알아 냈는데, 이것은 Mac에서 작동하지 않는다.mac에서 fortran의 '정적'바이너리 컴파일

program test 
    print *,'hello world' 
end program test 

및 결과 진은 여전히 ​​몇 가지 공유 라이브러리에 따라

ifort -static-libgcc -static-intel test.f90 

로 컴파일 :

valinor:tmp tom$ otool -L a.out 
a.out: 
    /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 103.0.0) 
    /usr/lib/libmx.A.dylib (compatibility version 1.0.0, current version 315.0.0) 
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 124.1.1) 

그래서이 나는 다음과 같은 프로그램을 고려하는 경우

Mac에서 공유 라이브러리에 의존하지 않도록 Fortran 코드를 올바르게 컴파일하는 방법?

답변

2

정적 라이브러리는 Mac OS X에서 설계 상 쉽지 않습니다.

은 이론적으로는 Mac OS X

정적 바이너리에 대한 자세한 내용은 this post를 참조하십시오, 당신은 정적 라이브러리 자신과 그들에 대한 링크를 만들 수있다. Darwin에서 C 런타임 라이브러리를 가져 와서 libgcc 등을 정적으로 컴파일해야합니다. 작동하지만 일부 작업이 필요할 수도 있습니다.

1

짧은 대답은 Mac OS X에서 전체 정적 링크를 실제로 원하지 않는다는 것입니다. 일부 제품 별 라이브러리의 정적 버전 링크는 공정하고 훌륭하지만 시스템 공유 라이브러리는 다음과 같습니다. 공유 라이브러리 Apple과의 호환성이 보장되는 Mac에서도 언제든지 찾을 수 있습니다.

추 신 : 명령 줄에 실제로 -static-libgcc를 지정하여 libgcc_s를 제거 할 수 있습니다. 어떤 식 으로든 할 가치가있는 것은 아니지만 ...