2012-08-23 59 views
1

我有一個新的FreeBSD 9.0安裝,無法通過CPAN安裝需要C的模塊。這似乎是cc被稱爲沒有-I/usr/local/include。我嘗試通過使用INC="-I/usr/local/include"來啓動CPAN來解決這個問題 - 雖然這可以解決某些模塊的問題,但它爲其他人解決了問題,因爲它似乎覆蓋了makefile中設置的任何默認設置。CPAN未能編譯C,我如何配置CCFLAGS?

我有另一個盒子差不多就可以了相同的設置(年齡稍大的安裝,但仍FreeBSD的9.0),perl -V對舊框顯示ccflags包含-I/usr/local/include,而它沒有做的新箱。

我猜這就是爲什麼CPAN沒有它就打電話給cc

問題是,我怎麼配置它?

回答

3

CPAN模塊使用的設置來自作爲核心Perl一部分的Config模塊。它記錄了編譯Perl時使用的編譯選項和設置。

無論出於何種原因,在新的FreeBSD 9.0安裝中編譯Perl的人員決定不包含-I/usr/local/include

正如您已經發現的那樣,在配置模塊中對抗設置非常困難。總的來說,最簡單的方法就是不打擊它。如果你想Perl使用/usr/local/include,那麼編譯Perl就可以。你可能也想指定-l/usr/local/lib

您應該檢查兩個類似系統上的Perl版本是否相同。

+0

是的,這絕對看起來像前進的方向,但我還沒有能夠解決如何;)在兩臺機器上Perl是5.14.2(最新版本是5.14.2_2並有一個coupla額外的FreeBSD特定的修補程序,但我看不到任何可能導致此問題的問題)。在這兩種情況下,它都是從FreeBSD ports系統安裝的,使用默認選項(我甚至試着再次編譯它,同樣的情況)。任何想法如何在通過端口編譯時添加該選項? – Dan

+0

由於FreeBSD'ports'系統對我來說是新聞 - 我第一次聽說它 - 我不知道,恐怕。我通常手動配置Perl,修復我想要的位置,添加和刪除包含目錄(通常在我的情況下刪除'/ usr/local/include',通常默認包含它)等等。 '手動配置'意味着'運行(交互式)配置腳本併爲其問題提供適當的值「。我從來沒有將我的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。 (不要忘了提交!)