3

Я хочу установить 32-битную версию Perl на моем сервере Cent OS, которая, конечно, 64-битная ..Вывод perl -v - это

[root@M-229 ~]# perl --version

This is perl, v5.10.1 (*) built for x86_64-linux-thread-multi

Copyright 1987-2009, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

для этого я попытался использовать yum и rpm, и они оба дают только 64-битные версии, чем я скачал файл perl-5.8.8.tar.gz и попытался установить с него. Даже это не сработало, и make дает следующую ошибку

make: *** No rule to make target `<command-line>', needed by `miniperlmain.o'.  Stop.

Я попробовал инструкции, данные по следующим ссылкам, однако это не сработало. Пожалуйста, помогите мне в этом.

эта ссылка

другая ссылка

и почти все ссылки здесь

Пожалуйста помоги,

РЕДАКТИРОВАТЬ Я хочу добиться этого, потому что это 32-битное приложение с открытым исходным кодом и работает на машине. Однако в некоторых случаях я обнаружил ошибку. Я скачал исходный код, понял и исправил ошибку, теперь я не могу проверить изменения, так как все остальные .so 32-битные, это дает мне dlopen failed: /usr/local/garner/plugins/libfwstub.so: wrong ELF class: ELFCLASS64 .

Я застрял в этой точке, так как последние несколько дней, пожалуйста, помогите ..

2 ответа2

3

В статье HOWTO perlbrew 32-битного Perl на 64-битном Centos описывается следующая процедура:

A. Установите perlbrew

Вам нужно будет установить perlbrew из CPAN, и он имеет множество зависимостей. Замечательный App::cpanminus делает этот опыт максимально безболезненным, поэтому я установил его перед тем, как перейти к самому perlbrew.

$ sudo yum install perl-CPAN
$ sudo cpan App::cpanminus
$ sudo cpanm install App::perlbrew

Б. Инициализация perlbrew

$ perlbrew init
$ perlbrew install-patchperl

Обратите внимание на вывод шага инициализации - он предложит вам внести изменения в конфигурацию вашей оболочки.

C. Установите 32-битные библиотеки

Установка этих двух пакетов была достаточной для создания 32-битного ядра Perl. Если вы создаете дополнительные модули XS для 32-битного Perl, для них может потребоваться установка других 32-битных библиотек.

$ sudo yum install glibc-devel.i686 libgcc.i686

D. Построить Perl

$ perlbrew install 5.8.9 -Accflags="-m32 -march=i686" -Aldflags="-m32 -march=i686" -Alddlflags="-shared -m32 -march=i686"
Fetching perl-5.8.9 as /home/zts/perl5/perlbrew/dists/perl-5.8.9.tar.bz2
Installing /home/zts/perl5/perlbrew/build/perl-5.8.9 into ~/perl5/perlbrew/perls/perl-5.8.9

This could take a while. You can run the following command on another shell to track the status:

  tail -f ~/perl5/perlbrew/build.perl-5.8.9.log

perl-5.8.9 is successfully installed.

Это все, что нужно сделать, хотя результат не совсем идеален. Хотя приведенный выше вызов создает 32-битный Perl, он не переопределяет системное имя_архива - поэтому результирующий @INC выглядит следующим образом:

@INC:
    /home/zts/perl5/perlbrew/perls/perl-5.8.9/lib/5.8.9/x86_64-linux
    /home/zts/perl5/perlbrew/perls/perl-5.8.9/lib/5.8.9
    /home/zts/perl5/perlbrew/perls/perl-5.8.9/lib/site_perl/5.8.9/x86_64-linux
    /home/zts/perl5/perlbrew/perls/perl-5.8.9/lib/site_perl/5.8.9
    .

Для моих целей это просто эстетическая проблема - каталоги x86_64-linux содержат 32-битный общий объект.

2

Я не пробовал это (и я действительно удивляюсь, почему вам понадобится 32-битный Perl в 64-битной системе), но, возможно, что-то в этом роде будет работать. Отрегулируйте пути и параметры конфигурации по мере необходимости. (используйте ls и cd, чтобы найти правильные каталоги в вашей системе, используйте ./configure --help, чтобы увидеть доступные параметры конфигурации):

export CC="gcc -m32"
export CXX="g++ -m32"
export PKG_CONFIG_PATH="/usr/lib32/pkgconfig"       
./configure --prefix=/usr --libdir=/usr/lib32 --enable-utf --enable-unicode-properties --enable-pcre16 --enable-pcre32 --enable-jit
make

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .