2011-03-30 59 views
1

由於某種原因,我們需要在Mac OS X Snow Leopard的/ usr/local中創建一個自定義的32位版本的Perl 5.12.3。我們如何在Mac OS X Snow Leopard的/ usr/local中創建一個32位版本的Perl 5.12.3?

任何人都可以解釋的過程中或指向我們的教程或示例的方向是什麼?

+1

當你'Configure'您的perl的身材,有詢問了一步:'任何額外的CC標誌'如果加上'-m32'你只建立一個32位對象碼。還有一些其他鏈接器標誌需要指定我剛纔錯過了,但這是我猜的一個起點。 – mkb 2011-03-30 14:08:18

+1

這個人似乎有答案:http://www.nntp.perl.org/group/perl.dbi.users/2010/06/msg35120.html – mkb 2011-03-30 14:11:49

回答

1

在雪豹內核在32位模式,並在64位模式主要是用戶空間運行。內核可以運行32位和64位用戶級應用程序,而不會出現問題。 您需要告訴perl構建系統創建一個32位唯一的二進制文件。這是通過設置-arch gcc標誌完成的。

對於簡單燎文件的應用程序,你會做這樣的:

 
gcc -arch i386 -o app app.m -lobjc -framework CoreFoundation -framework Cocoa 

在你的情況,你必須拱形標誌傳遞給build系統。 蔭不是一個Perl的專家,但我將配置的Perl這樣的:

 
./Configure -Dprefix=/usr/local -A ccflags="-arch i386" 
0

如果您的系統沒有64位內核擴展打開,那麼你就應該能夠直從源代碼編譯Perl和傳遞DESTDIR = /在make install命令行USR /本地。如果系統處於64位模式,則需要查看如何爲i386進行交叉編譯,這不是我之前必須做的事情,因爲我只是爲我的本地體系結構構建perl,或者從包中安裝。

+0

我不確定這就夠了。我啓動一個32位內核,我的本地內置perl是64位。 – mkb 2011-03-30 13:58:56

0

這裏是我是如何做到的使用Perlbrew:

  1. 安裝Perlbrew
  2. 確保您已經遵循了所有適當的步驟包括將該位添加到.bash_profile的末尾。
  3. 運行以下(對Perl 5.14.2,與線程根據需要調整其他的perl版本和選項。)(感謝WildPerl這一點智慧):

    perlbrew安裝5.14.2 -ders - Dusethreads -Duseithreads -Accflags =「 - arch i386」-Accflags =「 - B/Developer/SDKs/MacOSX10.6.sdk/usr/include/gcc」-Accflags =「 - B/Developer/SDKs/MacOSX10.6.sdk/usr/lib/gcc「-Accflags =」 - isystem/Developer/SDKs/MacOSX10.6.sdk/usr/include「-Accflags =」 - F/Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks 「-Accflags =」 - mmacosx版本分鐘= 10.5" -Aldflags = 「 - 拱I386 -Wl,-search_paths_first」 -Aldflags = 「 - WL,-syslibroot,/開發商/軟件開發工具包/ MacOSX10.6.sdk」 -Aldflags =「 - mmacosx-version-min = 10.5」-Alddlflags =「 - arch i386 -Wl,-search_paths_first」-Alddlflags =「 - wl,-syslibroot, /Developer/SDKs/MacOSX10.6.sdk」 -Alddlflags =‘ - mmacosx版本分鐘= 10.5’-Duseshrplib

  4. 如果您有Xcode中與開發者的SDK的更新版本的應用程序包的一部分,您需要從/ Developer創建符號鏈接:

    sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX。平臺/開發商/ /開發人員

  5. 安裝cpanm的本地副本:

    perlbrew安裝-cpanm

  6. 之後結束,轉到perlbrew安裝Perl的(我的系統上的地方,那就是: ~/perl5/perlbrew/perls/perl-5.14.2/lib/5.14.2/darwin-thread-multi-2level/和編輯Config.pm改變這一行:

    CC => '抄送',

本:

cc => 'cc -m32', 
相關問題