Переход с x86 на x64 (Где почитать и какие подводные камни?)
Модератор: Модераторы разделов
Переход с x86 на x64
Купил новый компьютер и понял, что уже никуда не деться от x64, стал собирать некоторые пакеты привычным sbopkg, на что он выдает сообщения, типа пакет не был протестирован на системе или не поддерживается. В частности пока наткнулся на такое со скайпом. Как решаются данные проблемы, и какие еще есть нюансы в отличие от x86? Еще заметил, что после перехода на x64, в mc пропала возможность навигации в стиле lynx, хотелось бы вернуть.
Re: Переход с x86 на x64
Я не слакварщик, но выскажусь.
На x64 перешёл, осваивая Debian, в Gentoo использовал его изначально. Не знаю, как Скайп ставится в Slackware, в Gentoo он является официально поддерживаемым пакетом и ставится без проблем, подтягивая ряд 32-битных библиотек app-emulation/emul-linux-x86*
Возможно, она не установлена по умолчанию или перешла в другой раздел меню? У меня (версия 4.8.6) этот пункт находится в разделе Настройки -> Настройки панелей.
На x64 перешёл, осваивая Debian, в Gentoo использовал его изначально. Не знаю, как Скайп ставится в Slackware, в Gentoo он является официально поддерживаемым пакетом и ставится без проблем, подтягивая ряд 32-битных библиотек app-emulation/emul-linux-x86*
Возможно, она не установлена по умолчанию или перешла в другой раздел меню? У меня (версия 4.8.6) этот пункт находится в разделе Настройки -> Настройки панелей.
Re: Переход с x86 на x64
1) Стоковая Slackware64 -- только x86-64. Для приложений, проекты которых живые, поддерживают x86-64 и исходные коды которых доступны, проблем со сборкой под Slackware64, специфичных именно для неё, как правило нет.
2) Бывает хочется странного, например, попользоваться приложением, которое а) на x64 не портировано или б) существует в виде бинарников только для x86. Skype, Opera -- это как раз случай "2б". Рецепт один: multilib -- собрать самому или воспользоваться готовым сторонним от alien.
3) Непосредственно переездом могут быть вызваны проблемы софта, у которого есть несовместимости в хранении настроек/данных между x86 и x86-64 версиями. Таких не должно быть, но ...
2) Бывает хочется странного, например, попользоваться приложением, которое а) на x64 не портировано или б) существует в виде бинарников только для x86. Skype, Opera -- это как раз случай "2б". Рецепт один: multilib -- собрать самому или воспользоваться готовым сторонним от alien.
3) Непосредственно переездом могут быть вызваны проблемы софта, у которого есть несовместимости в хранении настроек/данных между x86 и x86-64 версиями. Таких не должно быть, но ...
К 32/64 битности Slackware это не имеет никакого отношения, "виновата" версия mc: с какого-то момента 1) в интерфейсе настройка "Навигация в стиле lynx" перенесена в Настройки->Настройки панелей, и 2) чуть позже изменено расположение файлов настройки на диске.
Re: Переход с x86 на x64
Да, про Оперу неправ.
С вайном там весьма интересно, под x86-64 даже самим проектом стандартно собирается в пакет x86-64+x86-32.
С вайном там весьма интересно, под x86-64 даже самим проектом стандартно собирается в пакет x86-64+x86-32.
Re: Переход с x86 на x64
Были проблемы с nouveau.
тормознул, в mirrors прописал зеркало на обычную систему.
тормознул, в mirrors прописал зеркало на обычную систему.
Re: Переход с x86 на x64
при переходе с 32бит Арча на 64бит никаких проблем не испытывал. Видимо потому что у меня еще репозиторий multilib подключен.
Re: Переход с x86 на x64
Установил multilib от alien'a. Не получается собрать glibmm, выпадает с ошибкой:
В принципе, пробовал собирать еще до мультилиба, та же ерунда. Собираю слакбилдом и исходниками со slackbuilds.org
Еще меня очень волнует звук по блютуз, смотрю у blueman есть модуль pulseaudio, но он по умолчанию отключен, когда пытаюсь включить получаю следующий лог:
ругается типа pulseaudio старый, но у меня стоит pulseaudio-2.0-x86_64-1_SBo. Я так понимаю она гораздо новее.
Код: Выделить всё
libtool: compile: g++ -DHAVE_CONFIG_H -I.. -I../.. -DG_LOG_DOMAIN=\"glibmm\" -DGLIBMM_BUILD=1 -pthread -pthread -I/usr/include/sigc++-2.0 -I/usr/lib64/sigc++-2.0/include -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -Wall -O2 -fPIC -MT varianttype.lo -MD -MP -MF .deps/varianttype.Tpo -c varianttype.cc -fPIC -DPIC -o .libs/varianttype.o
In file included from varianttype.cc:26:0:
/usr/include/glib-2.0/glib/gvarianttype.h:24:2: error: #error "Only <glib.h> can be included directly."
make[2]: *** [varianttype.lo] Ошибка 1
make[2]: Выход из каталога `/tmp/SBo/glibmm-2.28.2/glib/glibmm'
make[1]: *** [all-recursive] Ошибка 1
make[1]: Выход из каталога `/tmp/SBo/glibmm-2.28.2'
make: *** [all] Ошибка 2
В принципе, пробовал собирать еще до мультилиба, та же ерунда. Собираю слакбилдом и исходниками со slackbuilds.org
Еще меня очень волнует звук по блютуз, смотрю у blueman есть модуль pulseaudio, но он по умолчанию отключен, когда пытаюсь включить получаю следующий лог:
Код: Выделить всё
Traceback (most recent call last):
File "/usr/lib64/python2.7/site-packages/blueman/main/PluginManager.py", line 71, in Load
self.__load_plugin(self.__classes[name])
File "/usr/lib64/python2.7/site-packages/blueman/main/PluginManager.py", line 171, in __load_plugin
inst._load(self.user_data)
File "/usr/lib64/python2.7/site-packages/blueman/plugins/AppletPlugin.py", line 60, in _load
super(AppletPlugin, self)._load(applet)
File "/usr/lib64/python2.7/site-packages/blueman/plugins/BasePlugin.py", line 65, in _load
self.on_load(parent)
File "/usr/lib64/python2.7/site-packages/blueman/plugins/applet/PulseAudio.py", line 173, in on_load
raise Exception("PulseAudio too old, required 0.9.15 or higher")
Exception: PulseAudio too old, required 0.9.15 or higher
ругается типа pulseaudio старый, но у меня стоит pulseaudio-2.0-x86_64-1_SBo. Я так понимаю она гораздо новее.
Re: Переход с x86 на x64
Не получается собрать glibmm, выпадает с ошибкой:
glibmm-2.28.2 у меня тоже не получилось собрать, зато версия 2.30.1 собралась без проблем.
Re: Переход с x86 на x64
Начал собирать glibmm 2.30.1, она потребовала libsigc++ 2.2.10, Собрал ввел upgrade, он предлагает выбрать кого нужно заменить, а там два пакета из glibc от мультилиба aliena - glibc-solibs или glibc-zoneinfo. Вместо того чтобы обновить libsigc++.
PS прошу прощения, че-то я спросоня совсем плох, не те команды пишу, вопрос снимается.
PS прошу прощения, че-то я спросоня совсем плох, не те команды пишу, вопрос снимается.
Re: Переход с x86 на x64
Код: Выделить всё
In file included from varianttype.cc:26:0:
/usr/include/glib-2.0/glib/gvarianttype.h:24:2: error: #error "Only <glib.h> can be included directly."
Код: Выделить всё
#error "Only <glib.h> can be included directly."
glibmm-2.28.2 рассчитана на более раннюю версию glib, где подключение отдельных файлов помимо glib.h было допустимым.
Исправление ситуации тоже несложно. Достаточно убедиться, что в файлах проекта включается только <glib.h> и не включаются <glib/*.h>.
Re: Переход с x86 на x64
Теперь не собирается libffado:
Еще и lirc не хочет:
Зашел в /usr/src/linux, сделал: make oldconfig && make prepare
Ничего не изменилось.
Еще и libgdiplus для avahi:
Код: Выделить всё
All kernel modules will be built.
Now enter 'make' and 'make install' to compile and install the package.
make all-recursive
make[1]: Вход в каталог `/tmp/SBo/lirc-0.9.0'
Making all in drivers
make[2]: Вход в каталог `/tmp/SBo/lirc-0.9.0/drivers'
Making all in lirc_dev
make[3]: Вход в каталог `/tmp/SBo/lirc-0.9.0/drivers/lirc_dev'
cp ./../lirc_dev/Module*.symvers .
cp: не удалось выполнить stat для «./../lirc_dev/Module*.symvers»: Нет такого файла или каталога
make[3]: [lirc_dev.o] Ошибка 1 (игнорирована)
mv Makefile Makefile.automake
cp ./../Makefile.kernel Makefile
CPPFLAGS="" CFLAGS="" LDFLAGS="" \
make -C /lib/modules/3.2.29/build/ SUBDIRS=/tmp/SBo/lirc-0.9.0/drivers/lirc_dev modules \
KBUILD_VERBOSE=1
make[4]: Вход в каталог `/usr/src/linux-3.2.29'
test -e include/generated/autoconf.h -a -e include/config/auto.conf || ( \
echo; \
echo " ERROR: Kernel configuration is invalid."; \
echo " include/generated/autoconf.h or include/config/auto.conf are missing.";\
echo " Run 'make oldconfig && make prepare' on kernel src to fix it."; \
echo; \
/bin/false)
...
...
g++ -o src/bebob/bebob_dl_codes.os -c -O2 -m64 -fPIC -DENABLE_BEBOB -DENABLE_FIREWORKS -DENABLE_MOTU -DENABLE_GENERICAVC -fPIC -DNDEBUG -DDBUS_HAS_THREADS_INIT_DEFAULT -I. -Isrc -I/usr/include/libxml++-2.6 -I/usr/lib64/libxml++-2.6/include -I/usr/include/libxml2 -I/usr/include/glibmm-2.4 -I/usr/lib64/glibmm-2.4/include -I/usr/include/sigc++-2.0 -I/usr/lib64/sigc++-2.0/include -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -Iexternal/libconfig src/bebob/bebob_dl_codes.cpp
g++ -o src/bebob/bebob_dl_mgr.os -c -O2 -m64 -fPIC -DENABLE_BEBOB -DENABLE_FIREWORKS -DENABLE_MOTU -DENABLE_GENERICAVC -fPIC -DNDEBUG -DDBUS_HAS_THREADS_INIT_DEFAULT -I. -Isrc -I/usr/include/libxml++-2.6 -I/usr/lib64/libxml++-2.6/include -I/usr/include/libxml2 -I/usr/include/glibmm-2.4 -I/usr/lib64/glibmm-2.4/include -I/usr/include/sigc++-2.0 -I/usr/lib64/sigc++-2.0/include -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -Iexternal/libconfig src/bebob/bebob_dl_mgr.cpp
src/bebob/bebob_dl_mgr.cpp: В функции-члене «bool BeBoB::BootloaderManager::cacheInfoRegisters(int)»:
src/bebob/bebob_dl_mgr.cpp:161:18: ошибка: нет декларации «sleep» в этой области видимости
src/bebob/bebob_dl_mgr.cpp: В функции-члене «bool BeBoB::BootloaderManager::downloadObject(BeBoB::BCD&, BeBoB::BootloaderManager::EObjectType)»:
src/bebob/bebob_dl_mgr.cpp:406:18: ошибка: нет декларации «sleep» в этой области видимости
src/bebob/bebob_dl_mgr.cpp:512:18: ошибка: нет декларации «sleep» в этой области видимости
src/bebob/bebob_dl_mgr.cpp: В функции-члене «bool BeBoB::BootloaderManager::startBootloaderCmd()»:
src/bebob/bebob_dl_mgr.cpp:678:15: ошибка: нет декларации «sleep» в этой области видимости
src/bebob/bebob_dl_mgr.cpp: В функции-члене «bool BeBoB::BootloaderManager::programGUIDCmd(fb_octlet_t)»:
src/bebob/bebob_dl_mgr.cpp:712:14: ошибка: нет декларации «sleep» в этой области видимости
src/bebob/bebob_dl_mgr.cpp: В функции-члене «bool BeBoB::BootloaderManager::initializePersParamCmd()»:
src/bebob/bebob_dl_mgr.cpp:726:14: ошибка: нет декларации «sleep» в этой области видимости
src/bebob/bebob_dl_mgr.cpp: В функции-члене «bool BeBoB::BootloaderManager::initializeConfigToFactorySettingCmd()»:
src/bebob/bebob_dl_mgr.cpp:740:14: ошибка: нет декларации «sleep» в этой области видимости
scons: *** [src/bebob/bebob_dl_mgr.os] Error 1
scons: building terminated because of errors.
Еще и lirc не хочет:
Код: Выделить всё
CPPFLAGS="" CFLAGS="" LDFLAGS="" \
make -C /lib/modules/3.2.29/build/ SUBDIRS=/tmp/SBo/lirc-0.9.0/drivers/lirc_atiusb modules \
KBUILD_VERBOSE=1
make[4]: Вход в каталог `/usr/src/linux-3.2.29'
test -e include/generated/autoconf.h -a -e include/config/auto.conf || ( \
echo; \
echo " ERROR: Kernel configuration is invalid."; \
echo " include/generated/autoconf.h or include/config/auto.conf are missing.";\
echo " Run 'make oldconfig && make prepare' on kernel src to fix it."; \
echo; \
/bin/false)
mkdir -p /tmp/SBo/lirc-0.9.0/drivers/lirc_atiusb/.tmp_versions ; rm -f /tmp/SBo/lirc-0.9.0/drivers/lirc_atiusb/.tmp_versions/*
make -f scripts/Makefile.build obj=/tmp/SBo/lirc-0.9.0/drivers/lirc_atiusb
gcc -Wp,-MD,/tmp/SBo/lirc-0.9.0/drivers/lirc_atiusb/.lirc_atiusb.o.d -nostdinc -isystem /usr/lib64/gcc/x86_64-slackware-linux/4.7.1/include -I/usr/src/linux-3.2.29/arch/x86/include -Iarch/x86/include/generated -Iinclude -include /usr/src/linux-3.2.29/include/linux/kconfig.h -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m64 -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -DCC_HAVE_ASM_GOTO -DIRCTL_DEV_MAJOR=61 -DEXPORT_SYMTAB -DHAVE_CONFIG_H -I. -I../.. -I/tmp/SBo/lirc-0.9.0/drivers/lirc_atiusb/. -I/tmp/SBo/lirc-0.9.0/drivers/lirc_atiusb/. -I/tmp/SBo/lirc-0.9.0/drivers/lirc_atiusb/../.. -I/tmp/SBo/lirc-0.9.0/drivers/lirc_atiusb/../.. -I/lib/modules/3.2.29/build//include/ -I/lib/modules/3.2.29/build//drivers/media/video/ -DMODULE -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(lirc_atiusb)" -D"KBUILD_MODNAME=KBUILD_STR(lirc_atiusb)" -c -o /tmp/SBo/lirc-0.9.0/drivers/lirc_atiusb/lirc_atiusb.o /tmp/SBo/lirc-0.9.0/drivers/lirc_atiusb/lirc_atiusb.c
/tmp/SBo/lirc-0.9.0/drivers/lirc_atiusb/lirc_atiusb.c:51:28: фатальная ошибка: linux/smp_lock.h: Нет такого файла или каталога
компиляция прервана.
make[5]: *** [/tmp/SBo/lirc-0.9.0/drivers/lirc_atiusb/lirc_atiusb.o] Ошибка 1
make[4]: *** [_module_/tmp/SBo/lirc-0.9.0/drivers/lirc_atiusb] Ошибка 2
make[4]: Выход из каталога `/usr/src/linux-3.2.29'
make[3]: *** [lirc_atiusb.o] Ошибка 2
make[3]: Выход из каталога `/tmp/SBo/lirc-0.9.0/drivers/lirc_atiusb'
make[2]: *** [all-recursive] Ошибка 1
make[2]: Выход из каталога `/tmp/SBo/lirc-0.9.0/drivers'
make[1]: *** [all-recursive] Ошибка 1
make[1]: Выход из каталога `/tmp/SBo/lirc-0.9.0'
make: *** [all] Ошибка 2
Зашел в /usr/src/linux, сделал: make oldconfig && make prepare
Ничего не изменилось.
Еще и libgdiplus для avahi:
Код: Выделить всё
make[2]: Выход из каталога `/tmp/SBo/libgdiplus-2.10.9/src'
Making all in tests
make[2]: Вход в каталог `/tmp/SBo/libgdiplus-2.10.9/tests'
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -I../src -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng14 -I/usr/include/freetype2 -I/usr/include/libexif -O2 -fPIC -pthread -MT testgdi.o -MD -MP -MF .deps/testgdi.Tpo -c -o testgdi.o testgdi.c
mv -f .deps/testgdi.Tpo .deps/testgdi.Po
/bin/sh ../libtool --tag=CC --mode=link gcc -O2 -fPIC -pthread -o testgdi testgdi.o ../src/libgdiplus.la -lpthread -lfontconfig
libtool: link: gcc -O2 -fPIC -pthread -o .libs/testgdi testgdi.o ../src/.libs/libgdiplus.so -lpthread /usr/lib64/libfontconfig.so -pthread -Wl,-rpath -Wl,/usr/lib64
/usr/lib64/gcc/x86_64-slackware-linux/4.7.1/../../../../x86_64-slackware-linux/bin/ld: testgdi.o: undefined reference to symbol 'g_free'
/usr/lib64/gcc/x86_64-slackware-linux/4.7.1/../../../../x86_64-slackware-linux/bin/ld: note: 'g_free' is defined in DSO /usr/lib64/libglib-2.0.so.0 so try adding it to the linker command line
/usr/lib64/libglib-2.0.so.0: could not read symbols: Invalid operation
collect2: error: ld returned 1 exit status
make[2]: *** [testgdi] Ошибка 1
make[2]: Выход из каталога `/tmp/SBo/libgdiplus-2.10.9/tests'
make[1]: *** [all-recursive] Ошибка 1
make[1]: Выход из каталога `/tmp/SBo/libgdiplus-2.10.9'
make: *** [all] Ошибка 2
Re: Переход с x86 на x64
linux/smp_lock.h -- последний раз его видели в 2.6.38.х. С тех пор Big Kernel Lock больше не применяется.
Re: Переход с x86 на x64
Еще отказывался собираться virtualbox, требовал javac по адресу:
/usr/lib64/java/bin/javac
jre собирал слакбилдом из /extra, он положил javac по адресу:
/usr/lib64/jvm/bin/javac
Сделал симлинк.
Теперь требует:
PS С этим разобрался, установил jre, а jdk забыл.
Все равно многое не собирается:
не собирается virtualbox, с включенным webservices, gsoap установлен.
Не собирается graphviz:
Не собирается cwiid, правда мне он не особо нужен. Могу еще много чего написать. Может просто стоит дождаться появления ветки 14.0 на slackbuils.org?
/usr/lib64/java/bin/javac
jre собирал слакбилдом из /extra, он положил javac по адресу:
/usr/lib64/jvm/bin/javac
Сделал симлинк.
Теперь требует:
Код: Выделить всё
/usr/lib64/java/bin/wsimport: Command not found
PS С этим разобрался, установил jre, а jdk забыл.
Все равно многое не собирается:
не собирается virtualbox, с включенным webservices, gsoap установлен.
Не собирается graphviz:
Код: Выделить всё
In file included from gv_php_init.c:14:0:
/usr/include/php/main/php.h:298:46: предупреждение: декларация функции не является прототипом [-Wstrict-prototypes]
gv_php_init.c: В функции «gv_string_writer»:
gv_php_init.c:22:12: ошибка: «tsrm_ls» undeclared (first use in this function)
gv_php_init.c:22:12: замечание: each undeclared identifier is reported only once for each function it appears in
gv_php_init.c: В функции «gv_channel_writer»:
gv_php_init.c:27:12: ошибка: «tsrm_ls» undeclared (first use in this function)
gv_php_init.c:28:1: предупреждение: control reaches end of non-void function [-Wreturn-type]
gv_php_init.c: В функции «gv_string_writer»:
gv_php_init.c:23:1: предупреждение: control reaches end of non-void function [-Wreturn-type]
make[4]: *** [libgv_php_la-gv_php_init.lo] Ошибка 1
make[4]: Выход из каталога `/tmp/SBo/graphviz-2.28.0/tclpkg/gv'
make[3]: *** [all-recursive] Ошибка 1
make[3]: Выход из каталога `/tmp/SBo/graphviz-2.28.0/tclpkg/gv'
make[2]: *** [all-recursive] Ошибка 1
make[2]: Выход из каталога `/tmp/SBo/graphviz-2.28.0/tclpkg'
make[1]: *** [all-recursive] Ошибка 1
make[1]: Выход из каталога `/tmp/SBo/graphviz-2.28.0'
make: *** [all] Ошибка 2
Не собирается cwiid, правда мне он не особо нужен. Могу еще много чего написать. Может просто стоит дождаться появления ветки 14.0 на slackbuils.org?
Re: Переход с x86 на x64
Появилась новая ветка на slackbuilds.org, практически все вопросы ушли.
Re: Переход с x86 на x64
Всем привет. Поставил wine отсюда:
http://slackware.com/~alien/slackbuilds/
Поставил multilib отсюда:
http://slackware.com/~alien/multilib/
Ставил версии и 1.4, и 1.5.5. Версия 1.5.5 не запускалась, 1.4 запускалась - вместо шрифтов квадратики. Обе ругаются на то, что мол отсутствует библиотека freetype. freetype-compat32 установлен. Как решить проблему? Собирать вайн с ключом --without-freetype не предлагать.
http://slackware.com/~alien/slackbuilds/
Поставил multilib отсюда:
http://slackware.com/~alien/multilib/
Ставил версии и 1.4, и 1.5.5. Версия 1.5.5 не запускалась, 1.4 запускалась - вместо шрифтов квадратики. Обе ругаются на то, что мол отсутствует библиотека freetype. freetype-compat32 установлен. Как решить проблему? Собирать вайн с ключом --without-freetype не предлагать.
Re: Переход с x86 на x64
Переходил. Проблемы были только в связи с моей криворукостью: перекомпилировать некоторые старые велосипеды не получилось. Пришлось делать, как нужно: чтобы от архитектуры код не зависел.
P.S. Костыль в виде multilib приходится держать из-за skype'а. А его - из-за криворукости разработчиков firefox, в котором до сих пор html5 не поддерживается.
P.S. Костыль в виде multilib приходится держать из-за skype'а. А его - из-за криворукости разработчиков firefox, в котором до сих пор html5 не поддерживается.
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка
Re: Переход с x86 на x64
Wine cannot find the FreeType font library. To enable Wine to
use TrueType fonts please install a version of FreeType greater than
or equal to 2.0.5.
Ставил этот:
http://slackware.com/~alien/multilib/14.0/...4-1compat32.txz
Символьные ссылки на просто libfreetype.so есть.
Re: Переход с x86 на x64
Проблема решилась установкой ВСЕХ пакетов с multilib + установокй webcorefonts.