Author

Topic: Собираем Ufasoft Miner на 64b Debian Squeeze как 32b приложение (Read 10909 times)

full member
Activity: 1092
Merit: 227
Вопрос:
А на кой хер ставить ось 64 для майнинга?
Чем не устраивает 32?

p.S> Клепаю образ openSuSE для майнинга все из коробки. Машина будет где-то в вторник - вот и проверю что получилось.
sr. member
Activity: 362
Merit: 250
Недавно выложили исходный код версии 0.20. На 64-битность не проверял, скомпилировал 32-битный: http://zenitur.narod.ru/ufasoft-miner-0.20.tar.lzma Из нового: перебиралка средствами GPU обзавелась ptalk, а требование к GCC стало скромнее: 4.4.
full member
Activity: 151
Merit: 100
У меня во время майнинга простаивает 2 ядра на Коре и5-2500. Есть смысл подключать их к работе (не разогнан) или затраты на липиздричество не окупит?
sr. member
Activity: 362
Merit: 250
Binary для Debian 5.0 "Lenny" (может заработать и во всех остальных дистрибутивах Linux).
sr. member
Activity: 362
Merit: 250
Автор, ты ошибся в строке configure для GMP! Правильно так: CPPFLAGS=-fexceptions ./configure --enable-cxx . Иначе не компилируется PPL, при этом он сам сообщает, в чёмошибка при компиляции GMP. Исправь.

Увы, моя система с LiveUSB и на компиляцию GCC не хватило свободного места на виртуальном жёстком диске. Жёсткого диска нет.
legendary
Activity: 3108
Merit: 1359
Слинкуй статически со всем с чем сможешь.
sr. member
Activity: 362
Merit: 250
Здесь же столько линуксоидов! Подскажите!
Вот скомпилировал я неофициальный 32-битный бинарник. И теперь я хочу, чтобы он везде работал.
Code:
zenitur@athlon64x2 ~/Downloads/ufa/ufasoft_bitcoin-miner-0.10 $ ldd bitcoin-miner
        linux-gate.so.1 =>  (0xffffe000)
        librt.so.1 => /lib32/librt.so.1 (0xf76c5000)
        libdl.so.2 => /lib32/libdl.so.2 (0xf76c1000)
        libcurl.so.4 => /usr/lib32/libcurl.so.4 (0xf7673000)
        libpthread.so.0 => /lib32/libpthread.so.0 (0xf765a000)
        libpcre.so.0 => /lib32/libpcre.so.0 (0xf7625000)
        libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.4.5/32/libstdc++.so.6 (0xf752f000)
        libm.so.6 => /lib32/libm.so.6 (0xf7509000)
        libgcc_s.so.1 => /lib32/libgcc_s.so.1 (0xf74ed000)
        libc.so.6 => /lib32/libc.so.6 (0xf7392000)
        /lib/ld-linux.so.2 (0xf770d000)
        libldap-2.4.so.2 => /usr/lib32/libldap-2.4.so.2 (0xf7354000)
        libgssapi_krb5.so.2 => /usr/lib32/libgssapi_krb5.so.2 (0xf7325000)
        libkrb5.so.3 => /usr/lib32/libkrb5.so.3 (0xf7275000)
        libk5crypto.so.3 => /usr/lib32/libk5crypto.so.3 (0xf7252000)
        libcom_err.so.2 => /lib32/libcom_err.so.2 (0xf724e000)
        libkeyutils.so.1 => /lib32/libkeyutils.so.1 (0xf7249000)
        libresolv.so.2 => /lib32/libresolv.so.2 (0xf7235000)
        libssl.so.1.0.0 => /usr/lib32/libssl.so.1.0.0 (0xf71e4000)
        libcrypto.so.1.0.0 => /usr/lib32/libcrypto.so.1.0.0 (0xf70a5000)
        libz.so.1 => /lib32/libz.so.1 (0xf7092000)
        liblber-2.4.so.2 => /usr/lib32/liblber-2.4.so.2 (0xf7084000)
        libkrb5support.so.0 => /usr/lib32/libkrb5support.so.0 (0xf707c000)
zenitur@athlon64x2 ~/Downloads/ufa/ufasoft_bitcoin-miner-0.10 $

Во-первых, у программы получилось куча зависимостей, тогда как заявлены только libcurl и libpcre. Во-вторых, программа ни за что не запустится с glibc например 2010 года, а надо чтобы работала везде! Вот пример программы, которая запустится везде:

Code:
zenitur@athlon64x2 /usr/games/braid $ ldd braid
        linux-vdso.so.1 =>  (0x00007fff81384000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00007f82639b8000)
        libCg.so => /usr/games/braid/libCg.so (0x00007f8262c3c000)
        libCgGL.so => /usr/games/braid/libCgGL.so (0x00007f8263c40000)
        libGL.so.1 => //usr/lib64/opengl/nvidia/lib/libGL.so.1 (0x00007f826292c000)
        libSDL-1.2.so.0 => /usr/games/braid/libSDL-1.2.so.0 (0x00007f8262691000)
        libstdc++.so.6 => /usr/games/braid/libstdc++.so.6 (0x00007f8262386000)
        libm.so.6 => /lib/libm.so.6 (0x00007f8262105000)
        libgcc_s.so.1 => /usr/games/braid/libgcc_s.so.1 (0x00007f8261ef7000)
        libc.so.6 => /lib/libc.so.6 (0x00007f8261b91000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f8263bd5000)
        libnvidia-tls.so.275.09.07 => //usr/lib64/opengl/nvidia/lib/libnvidia-tls.so.275.09.07 (0x00007f826198f000)
        libnvidia-glcore.so.275.09.07 => /usr/lib/libnvidia-glcore.so.275.09.07 (0x00007f825fb69000)
        libX11.so.6 => /usr/lib/libX11.so.6 (0x00007f825f81d000)
        libXext.so.6 => /usr/lib/libXext.so.6 (0x00007f825f607000)
        librt.so.1 => /lib/librt.so.1 (0x00007f825f3fe000)
        libdl.so.2 => /lib/libdl.so.2 (0x00007f825f1fa000)
        libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00007f825efdc000)
        libXau.so.6 => /usr/lib/libXau.so.6 (0x00007f825edd8000)
        libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00007f825ebd1000)
zenitur@athlon64x2 /usr/games/braid $

Минимум зависимостей! Иксы, Cg (в каталоге с игрой), OpenGL (есть во всех системах), libc, libm, libgcc, librt, libdl. А у меня?..
В общем, я решил скомпилировать не статически слинкованный файл, а динамически слинкованный, хотя OpenGL и не потребуется и в этом нет надобности. У меня есть дистрибутив 2006 года. Там разумеется старый glibc. Компилирую по этому руководству GCC 4.5 в пользовательский каталог, компилирую программу, и хочу отослать на страницу форума "вот бинарник, который запустится у всех!", но вот проблема: как скомпилировать так, чтобы не было проблем с зависимостями? Чтобы все эти лишние libssl (это я так понимаю надо curl перекомпилировать без поддержки ssl - хотя вдруг пул будет https, не надо тогда, тогда в каталог с программой его), gssapi, ldap, не были в зависимостях.
adv
full member
Activity: 168
Merit: 100
кАшмАр какой...
Интересно, реально ли в дебиан-подобных системах сделать по-человечески, как в openSuSE, чтобы 64- и 32-битные среды работали одновременно и не мешали друг другу?
В дебиан-подобных системах все и сделано по-человечески.
Да ладно? Ни разу не видел, чтобы обе среды "из коробки" работали одновременно, причём с бинарной совместимостью где-то, кроме openSuSE.
Можно ссылочку, как это в дебианоподобных делается? То ли я гуглю неправильно, то ли вообще руки под дебиан не заточены...
Тупо еще один каталог с 32 библиотеками. Ядро д.б. 64-битным, да.
Или можно просто использовать полностью 32-битный юзерленд с 64-битным ядром: такое применяют на серверах с большим кол-вом памяти, например.
http://alioth.debian.org/docman/view.php/30192/21/debian-amd64-howto.html#id292233

Общее описание по-русски: http://www.debian.org/ports/amd64/index.ru.html
Code:
Ядро поддерживает запуск 32-битных двоичных файлов, основные библиотеки для них содержатся в пакете ia32-libs.
......
Минимальная поддержка AMD64 на i386
Официальный дистрибутив i386 также содержит минимальную поддержку AMD64, заключающуюся в 64-битном ядре, наборе компиляторов, способных создавать 64-битные двоичные файлы, и пакете amd64-libs для запуска сторонних двоичных файлов для amd64 с собственными общими библиотеками.

В случае аффтара хватило бы
Code:
linux32 make
http://wiki.debian.org/DebianAMD64Faq
(Раз уж он ниасилил дебуилд и осмеливается в интернетах рекомендовать использовать "make install" на дебиан-системе. За такое, ИМХО, убивать нужно, ну или как минимум кастрировать.)
sr. member
Activity: 868
Merit: 251
кАшмАр какой...
Интересно, реально ли в дебиан-подобных системах сделать по-человечески, как в openSuSE, чтобы 64- и 32-битные среды работали одновременно и не мешали друг другу?
В дебиан-подобных системах все и сделано по-человечески.
Да ладно? Ни разу не видел, чтобы обе среды "из коробки" работали одновременно, причём с бинарной совместимостью где-то, кроме openSuSE.
Можно ссылочку, как это в дебианоподобных делается? То ли я гуглю неправильно, то ли вообще руки под дебиан не заточены...
adv
full member
Activity: 168
Merit: 100
кАшмАр какой...
Интересно, реально ли в дебиан-подобных системах сделать по-человечески, как в openSuSE, чтобы 64- и 32-битные среды работали одновременно и не мешали друг другу?
В дебиан-подобных системах все и сделано по-человечески. А в данном посте какие-то бредовые кошмары шлаквариста/гентушника описаны, но почему-то в дебиановском окружении.
newbie
Activity: 13
Merit: 0
У меня нет нигде генты под рукой Sad
Но судя по всему проблема в curl.
Если получится собрать - так же можно сделать man Smiley
sr. member
Activity: 362
Merit: 250
Gentoo. На компьютере openSuSE, на ноутбуке Gentoo для оптимизации. Так как я жадина и хочу задействовать ноутбук тоже, решил скомпилировать ufasoft на нём. minerd выдаёт только 980 khash в sse2_64 и 1100 с 4way. То есть даже встроенный в bitcoin перебиратор выдаёт больше. Процессор AMD одно ядро.

Update: открыл .bash_history и узнал, что я уже пробовал скомпилировать эту программу в 32-битном варианте. Так я компилировал в 64-битном. CC="gcc-4.5.2" CXX="g++-4.5.2" ./configure Он не видел gcc 4.5, хотя я выполнил на него переключение в специальной гентушной утилите. Так я пытался сделать 32-битную компиляцию: CC="gcc-4.5.2 -m32" CXX="g++-4.5.2 -m32" ./configure И получал:

Code:
zenitur@athlon64x2 ~/Downloads/ufasoft_bitcoin-miner-0.10.tar/ufasoft_bitcoin-miner-0.10 $ make
touch u-config.h
g++-4.5.2 -DPACKAGE_NAME=\"ufasoft_bitcoin-miner\" -DPACKAGE_TARNAME=\"ufasoft_bitcoin-miner\" -DPACKAGE_VERSION=\"0.10\" -DPACKAGE_STRING=\"ufasoft_bitcoin-miner\ 0.10\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"http://ufasoft.com/open/bitcoin\" -DPACKAGE=\"ufasoft_bitcoin-miner\" -DVERSION=\"0.10\" -DHAVE_LIBPCRE=1 -DHAVE_LIBPTHREAD=1 -DHAVE_LIBCURL=1 -DHAVE_LIBDL=1 -DHAVE_LIBRT=1 -I.    -std=c++0x -funsigned-char -fno-stack-protector -Wno-invalid-offsetof -I . -I el/inc -m32 -MT bitcoin-miner.o -MD -MP -MF .deps/bitcoin-miner.Tpo -c -o bitcoin-miner.o bitcoin-miner.cpp
In file included from /usr/include/curl/curl.h:35:0,
                 from el/inc/../libext/ext-http.h:22,
                 from el/inc/../libext/ext-cpp.h:829,
                 from el/inc/libext.h:1660,
                 from el/inc/ext.h:28,
                 from bitcoin-miner.cpp:19:
/usr/include/curl/curlrules.h:143:41: ошибка: размер массива ‘__curl_rule_01__’ отрицательный
/usr/include/curl/curlrules.h:153:53: ошибка: размер массива ‘__curl_rule_02__’ отрицательный
make: *** [bitcoin-miner.o] Ошибка 1]

32-битный curl лежит там где должен лежать, в /usr/lib32.
newbie
Activity: 13
Merit: 0
Почему именно gcc 4.5.3? У меня 4.5.2, обновить не проблема но лень. ufasoft выдаёт 0 MHASH.
4.5.3 только по причине того, что на момент сборки это была последняя версия в 5-й ветке.
А какая система и как собирали?
sr. member
Activity: 362
Merit: 250
Почему именно gcc 4.5.3? У меня 4.5.2, обновить не проблема но лень. ufasoft выдаёт 0 MHASH.

Насчёт "нормальной 64-битной версии под Linux" - я искал ту проблему, на которую ругается компилятор, и нашёл. Дело в том, что задавать тип языка для 64-битного ассемблера MASM не надо. Соответствующую ошибку исправляли в официальном MASM когда-то давно. Поэтому в коде и сказано "IF X64 ELSE и назначен язык". Для X64 никаких действий не выполняется. Если сделать чтобы выполнялись (удалив все эти IF и ELSE) то всё компилируется. Только вот не работает (у меня).
newbie
Activity: 13
Merit: 0
кАшмАр какой...
Интересно, реально ли в дебиан-подобных системах сделать по-человечески, как в openSuSE, чтобы 64- и 32-битные среды работали одновременно и не мешали друг другу?
Вроде как в Ubuntu все необходимое есть в репах, но сам не проверял Smiley
sr. member
Activity: 868
Merit: 251
кАшмАр какой...
Интересно, реально ли в дебиан-подобных системах сделать по-человечески, как в openSuSE, чтобы 64- и 32-битные среды работали одновременно и не мешали друг другу?
newbie
Activity: 13
Merit: 0
Имеем в наличии
Список уже установленных пакетов (вдруг заругается, что чего-то не хватает) тут

Чистый профиль пользователя:
Code:
b@host:~$ ls -al
total 20
drwxr-xr-x 2 bitcoin bitcoin 4096 May 13 19:48 .
drwxr-xr-x 4 root    root    4096 May 13 19:43 ..
-rw-r--r-- 1 bitcoin bitcoin  220 May 13 19:43 .bash_logout
-rw-r--r-- 1 bitcoin bitcoin 3184 May 13 19:43 .bashrc
-rw-r--r-- 1 bitcoin bitcoin  675 May 13 19:43 .profile

b@host:~$ pwd
/home/bitcoin

Система:
Code:
Linux 2.6.32-5-amd64
b@host:~$ cat /etc/debian_version
6.0.1

Процессор:
Code:
b@host:~$ cat /proc/cpuinfo
vendor_id       : GenuineIntel
cpu family      : 6
model           : 23
model name      : Intel(R) Xeon(R) CPU           E5405  @ 2.00GHz
stepping        : 10
cpu MHz         : 2000.034
cache size      : 6144 KB
cpu cores       : 4

Вот в этом профиле все и будем собирать
Code:
b@host:~$ mkdir src
b@host:~$ cd src
b@host:~/src$

Устанавливаем JWASM
http://www.japheth.de/Download/JWasm/JWasm205bl.zip
Code:
b@host:~/src$ mkdir ~/bin
b@host:~/src$ wget http://www.japheth.de/Download/JWasm/JWasm205bl.zip
b@host:~/src$ unzip JWasm205bl.zip -d jwasm
b@host:~/src$ cp jwasm/JWASM ~/bin/jwasm
b@host:~/src$ chmod +x ~/bin/jwasm
b@host:~/src$ source ~/.bashrc
b@host:~/src$ source ~/.profile

Сборка gcc-4.5.3
К сожалению в репозитории я не нашел нужной версии (может плохо искал).
Собираем по очереди необходимые зависимости.

(GMP) version 4.3.2 (or later) http://ftp://ftp.gmplib.org/pub/gmp-5.0.2/gmp-5.0.2.tar.gz
Code:
b@host:~/src$ wget -c ftp://ftp.gmplib.org/pub/gmp-5.0.2/gmp-5.0.2.tar.gz
b@host:~/src$ tar zfx gmp-5.0.2.tar.gz
b@host:~/src$ cd gmp-5.0.2/
b@host:~/src/gmp-5.0.2$
b@host:~/src/gmp-5.0.2$ ./configure --prefix=/home/bitcoin
b@host:~/src/gmp-5.0.2$ make
b@host:~/src/gmp-5.0.2$ make check
b@host:~/src/gmp-5.0.2$ make install
b@host:~/src/gmp-5.0.2$ cd ../

MPFR Library version 2.4.2 (or later) http://www.mpfr.org/mpfr-current/mpfr-3.0.1.tar.gz
Code:
b@host:~/src$ wget -c http://www.mpfr.org/mpfr-current/mpfr-3.0.1.tar.gz
b@host:~/src$ tar zfx mpfr-3.0.1.tar.gz
b@host:~/src$ cd mpfr-3.0.1/
b@host:~/src/mpfr-3.0.1$
b@host:~/src/mpfr-3.0.1$ ./configure --prefix=/home/bitcoin --with-gmp=/home/bitcoin
b@host:~/src/mpfr-3.0.1$ make
b@host:~/src/mpfr-3.0.1$ make check
b@host:~/src/mpfr-3.0.1$ make install
b@host:~/src/mpfr-3.0.1$ cd ../

MPC Library version 0.8.1 (or later) http://www.multiprecision.org/mpc/download/mpc-0.9.tar.gz
Code:
b@host:~/src$ wget -c http://www.multiprecision.org/mpc/download/mpc-0.9.tar.gz
b@host:~/src$ tar zfx mpc-0.9.tar.gz
b@host:~/src$ cd mpc-0.9/
b@host:~/src/mpc-0.9$ ./configure --prefix=/home/bitcoin --with-gmp=/home/bitcoin --with-mpfr=/home/bitcoin
b@host:~/src/mpc-0.9$ make
b@host:~/src/mpc-0.9$ make install
b@host:~/src/mpc-0.9$ cd ../

Parma Polyhedra Library (PPL) version 0.11 http://www.cs.unipr.it/ppl/Download/ftp/releases/0.11.2/ppl-0.11.2.tar.gz
Code:
b@host:~/src$ wget -c http://www.cs.unipr.it/ppl/Download/ftp/releases/0.11.2/ppl-0.11.2.tar.gz
b@host:~/src$ tar zfx ppl-0.11.2.tar.gz
b@host:~/src$ cd ppl-0.11.2/
b@host:~/src/ppl-0.11.2$ ./configure --prefix=/home/bitcoin --with-gmp-prefix=/home/bitcoin
b@host:~/src/ppl-0.11.2$ make
b@host:~/src/ppl-0.11.2$ make install
b@host:~/src/ppl-0.11.2$ cd ../

CLooG-PPL version 0.15 or CLooG 0.16 http://ftp://gcc.gnu.org/pub/gcc/infrastructure/cloog-0.16.2.tar.gz
Code:
b@host:~/src$ wget -c ftp://gcc.gnu.org/pub/gcc/infrastructure/cloog-0.16.2.tar.gz
b@host:~/src$ tar zfx cloog-0.16.2.tar.gz
b@host:~/src$ cd cloog-0.16.2/
b@host:~/src/cloog-0.16.2$ ./configure --prefix=/home/bitcoin --with-gmp-prefix=/home/bitcoin --with-polylib-prefix=/home/bitcoin
b@host:~/src/cloog-0.16.2$ make
b@host:~/src/cloog-0.16.2$ make install
b@host:~/src/cloog-0.16.2$ cd ../

GCC-4.5.3 http://ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.5.3/gcc-4.5.3.tar.gz
Параметр -j нужен для параллельной сборки, как правило равен количеству ядер. В нашем случае их 4.
Code:
b@host:~/src$ wget -c ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.5.3/gcc-4.5.3.tar.gz
b@host:~/src$ tar zfx gcc-4.5.3.tar.gz
b@host:~/src$ mkdir ~/objdir
b@host:~/src$ cd ~/objdir
b@host:~/objdir$ export LD_LIBRARY_PATH=/home/bitcoin/lib:$LD_LIBRARY_PATH
b@host:~/objdir$ ../src/gcc-4.5.3/configure --prefix=/home/bitcoin --enable-languages=c,c++ --with-gmp=/home/bitcoin --with-mpfr=/home/bitcoin --with-mpc=/home/bitcoin --with-ppl=/home/bitcoin --with-cloog=/home/bitcoin
b@host:~/objdir$ make -j 4
b@host:~/objdir$ make install
b@host:~/objdir$ cd ../src

Сборка PCRE (под 32b)
http://ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.12.tar.gz
Code:
b@host:~/objdir$ cd ../src
b@host:~/src$ wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.12.tar.gz
b@host:~/src$ tar zfx pcre-8.12.tar.gz
b@host:~/src$ cd pcre-8.12/
b@host:~/src/pcre-8.12$
b@host:~/src/pcre-8.12$ ./configure --prefix=/home/bitcoin "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32" --enable-utf8
b@host:~/src/pcre-8.12$ make
b@host:~/src/pcre-8.12$ make install
b@host:~/src/pcre-8.12$ cd ../

Сборка CURL (под 32b)
http://curl.haxx.se/download/curl-7.21.6.tar.gz
Code:
b@host:~/src$ wget -c http://curl.haxx.se/download/curl-7.21.6.tar.gz
b@host:~/src$ tar zfx curl-7.21.6.tar.gz
b@host:~/src$ cd curl-7.21.6/
b@host:~/src/curl-7.21.6$ ./configure --prefix=/home/bitcoin "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32" --without-libssh2
b@host:~/src/curl-7.21.6$ make
b@host:~/src/curl-7.21.6$ make install
b@host:~/src/curl-7.21.6$ cd ../

Собираем Ufasoft Miner (под 32b)
http://ufasoft.com/files/open/ufasoft_bitcoin-miner-0.10.tar.lzma
Code:
b@host:~/src$ wget http://ufasoft.com/files/open/ufasoft_bitcoin-miner-0.10.tar.lzma
b@host:~/src$ tar fx ufasoft_bitcoin-miner-0.10.tar.lzma
b@host:~/src$ cd ufasoft_bitcoin-miner-0.10/
b@host:~/src/ufasoft_bitcoin-miner-0.10$ ./configure --prefix=/home/bitcoin "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32"
Открываем получившийся Makefile, ищем строку
Code:
JASMFLAGS = -DX64=1 -10 -elf64
Убираем метку -DX64=1 и меняем -elf64 на -elf. Итого получится так
Code:
JASMFLAGS = -10 -elf
Продолжаем сборку
Code:
b@host:~/src/ufasoft_bitcoin-miner-0.10$ make
b@host:~/src/ufasoft_bitcoin-miner-0.10$ make install

Запуск
Code:
b@host:~/src/ufasoft_bitcoin-miner-0.10$ cd ~/bin
b@host:~/bin$ export LD_LIBRARY_PATH=/home/bitcoin/lib32:$LD_LIBRARY_PATH
b@host:~/bin$ ./bitcoin-miner -a 5 -o http://deepbit.net:8332 -u [email protected] -p passwd -t 4
bitcoin-miner 0.10  Copyright (c) 2011 Ufasoft  http://ufasoft.com/open/bitcoin
Mining for http://deepbit.net:8332
4 threads       Using SSE2
Switching to http://j2.deepbit.net:8332

P.S. Чтобы не держать консоль открытой, приходится использовать screen. Я все же думаю, что автор доделает нормальную версию под 64b Smiley
Jump to: