Компиляция perl Net :: Интерфейсный модуль в CentOS 8.1 завершается неудачно - PullRequest
2 голосов
/ 04 мая 2020

Я загружаю исходники и вручную пытаюсь скомпилировать модуль perl Net :: Interface. Использование CPAN для установки модуля выдает ту же ошибку.

wget http://search.cpan.org/CPAN/authors/id/M/MI/MIKER/Net-Interface-1.016.tar.gz
tar xvfz Net-Interface-1.016.tar.gz
cd Net-Interface-1.016
perl Makefile.PL

Теперь это происходит с ошибкой ниже

checking for getnameinfo... yes
checking whether byte ordering is bigendian... no
checking for uint8_t... yes
checking size of uint8_t... configure: error: cannot compute sizeof (uint8_t)
See `config.log' for more details.
could not open config.h

config.log показывает ниже ошибку

configure:10128: result: yes
configure:10135: checking size of uint8_t
configure:10437: gcc -o conftest -g -O2  -Wl,-z,relro -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -fstack-protector-strong -L/usr/local/lib  conftest.c  >&5
/usr/bin/ld: /tmp/ccXH6miX.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: final link failed: Nonrepresentable section on output
collect2: error: ld returned 1 exit status
configure:10440: $? = 1
configure: program exited with status 1
configure: failed program was:
| /* confdefs.h.  */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""

Как я могу исправить эту ошибку? Кажется, config.log предлагает передать флаг "-fPI C", но я не уверен, как?

Спасибо.

1 Ответ

2 голосов
/ 05 мая 2020
/usr/bin/ld: /tmp/ccXH6miX.o: relocation R_X86_64_32 against
  `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: final link failed: Nonrepresentable section on output
collect2: error: ld returned 1 exit status

Сценарий конфигурирования должен быть запущен с --enable-shared по некоторым причинам (это не обязательно в Ubuntu). В контейнере docker с CentOS 8 у меня сработало следующее:

./configure --enable-shared
perl -I. Makefile.PL
make
sudo make install
...