Я пытаюсь скомпилировать python 3.7 на solaris 11.2. Компиляция, по-видимому, является свободной от ошибок до фазы связывания. У меня нет доступа root.
Я пробовал следующее:
./configure --prefix=/appgroup/appuser
make
./configure --prefix=/appgroup/appuser --enable-shared
make
Обе ошибки:
gcc -o python Programs/python.o -Wl,-R,/appgroup/appuser/scripts/lib -L. -lpython3.7m -lsocket -lnsl -lintl -ldl -lsendfile -lm
Undefined first referenced
symbol in file
libintl_bind_textdomain_codeset ./libpython3.7m.so
libintl_gettext ./libpython3.7m.so
libintl_textdomain ./libpython3.7m.so
libintl_dcgettext ./libpython3.7m.so
libintl_bindtextdomain ./libpython3.7m.so
libintl_dgettext ./libpython3.7m.so
ld: fatal: symbol referencing errors
collect2: error: ld returned 1 exit status
*** Error code 1
make: Fatal error: Command failed for target 'python'
Я думаю, что ошибка основана на конфликте между /usr/include/libintl.h и /usr/local/include/libintl.h, потому что в файле /usr/local/include есть эти переменные, в то время как /usr/include делает не.
Я попытался установить CFLAGS = "-I/usr/include -I/usr/local/include" и CFLAGS = "-I/usr/local/include -I/usr/include", но результат был тот же самый.
Есть идеи?
Сейчас он работает. Спасибо, paulsm4.
make clean
./configure --prefix=/apps/myapp/scripts CFLAGS="-I/usr/local/include -I/usr/include"
cp pyconfig.h pyconfig.h-1018-1200
vim +/INTL pyconfig.h
diff pyconfig.h pyconfig.h-1018-1200
568c568
< /* #undef HAVE_LIBINTL_H */
---
> #define HAVE_LIBINTL_H 1
1463c1463
< /* #undef WITH_LIBINTL */
---
> #define WITH_LIBINTL 1
make
make test
... stopped test with Ctrl-C
... (this machine is in a production environment without internet access)
make install
python3 -V
Python 3.7.0
Есть еще пара проблем, но он действительно загружается.