2012-08-23 1 views
1

CPAN을 통해 C가 필요한 모듈을 설치하는 데 문제가있는 새로운 FreeBSD 9.0 설치가 있습니다. -I/usr/local/include 없이는 cc이 호출 된 것 같습니다. 나는 CPAN을 INC="-I/usr/local/include"으로 시작하여이를 무시하려고 시도했다. 일부 모듈의 경우 문제가 수정되었지만 makefiles에 설정된 모든 기본값을 무시하는 것처럼 보이기 때문에 다른 모듈에서는 문제가된다.CPAN이 C를 컴파일하지 못하면 어떻게 CCFLAGS를 구성 할 수 있습니까?

나는이 새로운 상자를하지 않는 반면 ccflags-I/usr/local/include 포함되어 있음을 보여줍니다 오래된 상자에 거의 같은 그 위에 설치 (약간 나이가 설치,하지만 여전히 FreeBSD의 9.0), perl -V와 함께 또 다른 상자를 가지고있다.

나는 이것이 CPAN이 cc이라고 부르는 이유라고 생각합니다.

질문 : 어떻게 구성 할 수 있습니까?

답변

3

CPAN 모듈에서 사용하는 설정은 핵심 Perl의 구성 모듈에서 가져옵니다. Perl이 컴파일 될 때 사용 된 컴파일 옵션과 설정을 기록합니다.

이유가 무엇이든간에 새 FreeBSD 9.0 설치에서 Perl을 컴파일하는 사람은 -I/usr/local/include을 포함하지 않기로 결정했습니다.

Config 모듈에서 설정을 변경하는 것은 이미 발견했듯이 어렵습니다. 대체로 싸우지 않는 것이 가장 간단합니다. Perl이 /usr/local/include을 사용하게하려면 Perl을 컴파일하십시오. 아마도 -l/usr/local/lib을 지정하기를 원할 것입니다.

비슷한 두 시스템에서 Perl 버전이 같거나 같은지 확인해야합니다.

+0

네, 확실히 앞으로 나아갈 것 같지만, 아직 어떻게 작동하지 못 했습니까?) 두 기계 모두 Perl은 5.14.2입니다 (최신 5.14.2_2 임). FreeBSD-specific 패치가 추가로 들어 있지만이 같은 문제를 일으킬만한 것은 아무것도 없습니다.) 두 경우 모두 기본 옵션을 사용하여 FreeBSD 포트 시스템에서 설치되었습니다 (동일한 상황에서 다시 컴파일하려고했습니다). 포트를 통해 컴파일 할 때 어떻게 그 옵션을 추가 할 수 있습니까? – Dan

+0

FreeBSD '포트'시스템이 나에게 뉴스이기 때문에 처음 들어 본 적이 있습니다. 잘 모르겠습니다. 필자는 보통 Perl을 수동으로 구성하여 원하는 위치를 수정하고 포함 디렉토리를 추가 및 제거합니다 (대개'/ usr/local/include'를 제거합니다, 보통은 기본적으로 포함되어 있습니다). '수동 구성'은 '(대화 형) Configure 스크립트를 실행하고 적절한 값을 질문에 제공'을 의미합니다. 필자의 시스템 디렉토리에 Perl 빌드를 설치하지 않습니다. Perl의 다른 버전을 기대하는 것을 망칠 위험을 감수하고 싶지 않습니다. –

1

그것이 작동하는 경우, 가장 좋은 건 그렇지 않으면

perl -E'require "Config_heavy.pl"; say $INC{"Config_heavy.pl"};' 

에 의해 반환 된 파일의 ccflags 항목에 추가 아마, 반드시 ExtUtis::MakeMakerModule::Build 설치에이를 지정하는 방법이있다. 그렇다면 o conf makepl_argo conf mbuildpl_arg을 사용하여 cpan을 설정할 수 있습니다. (커밋하는 것을 잊지 마세요!)