LINUX.ORG.RU

Помогите в сборке программы

 


0

1

Всем привет! Помогите пожалуйста, весь мозг сломал уже. При попытке сбора программы командой make (все библиотеки устанавливал) пишет следующее (заранее извиняюсь за слитный текст, моя первая тема, попробовал редактировать - не очень вышло):

gcc -O3 -flto -funsigned-char -falign-functions=16 -falign-loops=16 -falign-jumps=16 -Wall -Wextra -Wno-pointer-sign -Wno-sign-compare -pedantic -std=gnu99 -static brainflayer.o hex.o bloom.o mmapf.o hsearchf.o ec_pubkey_fast.o ripemd160_256.o dldummy.o algo/brainwalletio.o algo/warpwallet.o algo/keccak.o algo/sha3.o algo/brainv2.o secp256k1/.libs/libsecp256k1.a scrypt-jane/scrypt-jane.o -lssl -lrt -lcrypto -lz -lgmp -o brainflayer
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/libcrypto.a(b_addr.o): в функции «BIO_lookup_ex»:
(.text+0xbea): предупреждение: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/libcrypto.a(b_sock.o): в функции «BIO_gethostbyname»:
(.text+0x71): предупреждение: Using 'gethostbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/libgcc_eh.a(unwind-dw2.o): в функции «uw_init_context_1»:
(.text+0x1de5): неопределённая ссылка на «pthread_once»
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/libcrypto.a(threads_pthread.o): в функции «CRYPTO_THREAD_lock_new»:
(.text+0x45): неопределённая ссылка на «pthread_rwlock_init»
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/libcrypto.a(threads_pthread.o): в функции «CRYPTO_THREAD_read_lock»:
(.text+0x75): неопределённая ссылка на «pthread_rwlock_rdlock»
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/libcrypto.a(threads_pthread.o): в функции «CRYPTO_THREAD_write_lock»:
(.text+0x95): неопределённая ссылка на «pthread_rwlock_wrlock»
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/libcrypto.a(threads_pthread.o): в функции «CRYPTO_THREAD_unlock»:
(.text+0xb5): неопределённая ссылка на «pthread_rwlock_unlock»
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/libcrypto.a(threads_pthread.o): в функции «CRYPTO_THREAD_lock_free»:
(.text+0xda): неопределённая ссылка на «pthread_rwlock_destroy»
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/libcrypto.a(threads_pthread.o): в функции «CRYPTO_THREAD_run_once»:
(.text+0x105): неопределённая ссылка на «pthread_once»
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/libcrypto.a(threads_pthread.o): в функции «CRYPTO_THREAD_init_local»:
(.text+0x125): неопределённая ссылка на «pthread_key_create»
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/libcrypto.a(threads_pthread.o): в функции «CRYPTO_THREAD_set_local»:
(.text+0x157): неопределённая ссылка на «pthread_setspecific»
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/libcrypto.a(threads_pthread.o): в функции «CRYPTO_THREAD_cleanup_local»:
(.text+0x177): неопределённая ссылка на «pthread_key_delete»
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/libcrypto.a(threads_pthread.o): в функции «openssl_init_fork_handlers»:
(.text+0x1d3): неопределённая ссылка на «pthread_once»
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/libcrypto.a(threads_pthread.o): в функции «CRYPTO_THREAD_get_local»:
(.text+0x143): неопределённая ссылка на «pthread_getspecific»
collect2: error: ld returned 1 exit status
make: *** [Makefile:68: brainflayer] Ошибка 1



Последнее исправление: Deleted (всего исправлений: 4)
Ответ на: комментарий от imul

да, оно самое. без -flto сейчас попробую. но я просто make запускал (вручную это не вводил). + через менеджер программ openssl устанавливал.ld debian GLIBC 2.28-10

voldemar1010
() автор топика
Ответ на: комментарий от voldemar1010

Я уже попробовал и так и сяк. Библиотеки там в мекфайле есть, но линкер их не хочет использовать.

imul ★★★★★
()
Ответ на: комментарий от anonymous

Ты хотел сказать LLD-ом линковать?

anonymous
()
Ответ на: комментарий от anonymous

А можно поподробнее. Или ссылку как это сделать.

voldemar1010
() автор топика
Ответ на: комментарий от anonymous

дебилиан просто плохо в современном мире ориентируется

Судя по:

A proof-of-concept cracker for cryptocurrency brainwallets and other low entropy key alogrithms.

там всё-таки кали.

imul ★★★★★
()
Ответ на: комментарий от i-rinat

LTO тогда тоже видимо устарел, ведь голдом его линкуют. А хотя нет, не устарел, его в gnu binutils включили и у llvm свой голд вроде. Пытаюсь найти какой-нибудь ченджлог и не могу, прямо беда всего гну софта.

anonymous
()
Ответ на: комментарий от voldemar1010

Тебе будут нужны библиотеки для статической сборки из пакетов zlib gmp и openssl. Какие именно пакеты тебе надо ставить не подскажу, у меня лапки^W джента, там это решается юз-флагом.

imul ★★★★★
()
Ответ на: комментарий от anonymous

Это что же, голд лет на 100 старее, чем я считал?

Нет. Просто в системный софт пришли стандарты js-фреймворков. Вышел год назад? Доисторический.

i-rinat ★★★★★
()
Ответ на: комментарий от voldemar1010

Наверняка не то же самое. Но, я не уверен, что обойдётся только этими .a и наверняка придётся ставить ещё кучу. Посмотри что не находит, определяй в каком это пакете и ставь.

imul ★★★★★
()
Ответ на: комментарий от imul

так он же не пишет чего не хватает, я так понимаю при компиляции не находит pthread библиотеки (или не так?). Но при дальнейшем копании так такое программирование начинается - что мне, как обычному начинающему юзеру. Было бы чуть побольше информации в каком еще направлении искать. И да, спасибо что на ssl библиотеки навели )))

voldemar1010
() автор топика
Ответ на: комментарий от imul

У меня предложение проще. Раз проблема в статической линковке, то избавится от неё: удалить вхождения -static из Makefile. Зависимости в репозитории, похоже, статически собираются и на них это не повлияет.

xaizek ★★★★★
()
Ответ на: комментарий от xaizek

удалить вхождения -static из Makefile

Это тоже не сильно поможет. Будет потом undefined reference to `bloom_chk_hash160'
Надо будет ещё искать где это и в мейкфайле добавлять библиотеки в LIBS.

imul ★★★★★
()
Ответ на: комментарий от voldemar1010

Было бы чуть побольше информации в каком еще направлении искать

Ну я уже итак написал в каком направлении искать. Смотришь на что ругается, ищешь в интернет что это такое и ставишь пакет.

imul ★★★★★
()
Ответ на: комментарий от imul

ну вот например в списке нужных библиотек он пишет -lrt , т.е. это library rt или librt - правильно? но там же их куча, т.е. он не пишет конкретно как с libsecp256k1 (вот тут понятно). Хочется более конкретно узнать какую библиотеку компилятор требует - а он же этого не указывает по тексту

voldemar1010
() автор топика
Ответ на: комментарий от imul

и еще вопрос, а есть ли команда, с помощью которой недостающие библиотеки компилятор сам заберет с репозиториев линукс (из сети)

voldemar1010
() автор топика
Ответ на: комментарий от xaizek

У меня собралось без проблем после удаления -static.

У меня не дебиан, другая версия gcc и несколько вариантов ldd.
Собирается и статиком и без, но только если bloom_chk_hash160 не inline. И при этом сборка статиком сегфолтится. А вот ld.gold, или ld.bfd уже не важно.

imul ★★★★★
()
Ответ на: комментарий от voldemar1010

Да, -lrt соответствует librt
Вот все библиотеки от которых зависит динамическая сборка:
Версии у тебя будут другие из-за других версий пакетов.

linux-vdso.so.1 (0x00007ffcc031f000)
libssl.so.1.1 => /usr/lib64/libssl.so.1.1 (0x00007fb79402c000)
librt.so.1 => /usr/lib64/librt.so.1 (0x00007fb794022000)
libcrypto.so.1.1 => /usr/lib64/libcrypto.so.1.1 (0x00007fb793d2b000)
libz.so.1 => /usr/lib64/libz.so.1 (0x00007fb793d0d000)
libgmp.so.10 => /usr/lib64/libgmp.so.10 (0x00007fb793c85000)
libc.so.6 => /usr/lib64/libc.so.6 (0x00007fb793aae000)
libpthread.so.0 => /usr/lib64/libpthread.so.0 (0x00007fb793a88000)
libdl.so.2 => /usr/lib64/libdl.so.2 (0x00007fb793a82000)
/lib64/ld-linux-x86-64.so.2 (0x00007fb794130000)

imul ★★★★★
()
Последнее исправление: imul (всего исправлений: 1)
Ответ на: комментарий от xaizek

Собралось. Но смущает, что после запуска brainflare вводишь различные команды и никаких реакций в консоле. Такое ощущение, что собралось не до конца.

voldemar1010
() автор топика
Ответ на: комментарий от voldemar1010

Какие команды? Он на вход какие-то фразы ждёт, похоже.

xaizek ★★★★★
()
Ответ на: комментарий от imul

вводишь - но он ничего не выводит. В ответ пустая строка

voldemar1010
() автор топика

Посмотрел Makefile, добавь в 7ю строчку, чтобы получилось так:

LIBS = -lpthread -lssl -lrt -lcrypto -lz -lgmp

ещё можешь заменить там в CFLAGS, -flto на -flto=количество ядер, если памяти много.

kickass
()
Ответ на: комментарий от voldemar1010

make clean делал?

у меня это говно выдает

/usr/lib/gcc/x86_64-pc-linux-gnu/9.1.0/../../../../x86_64-pc-linux-gnu/bin/ld: brainflayer.o: in function `main':
brainflayer.c:(.text.startup+0xc23): undefined reference to `bloom_chk_hash160'
collect2: ошибка: выполнение ld завершилось с кодом возврата 1
make: *** [Makefile:67: brainflayer] Ошибка 1

kickass
()
Ответ на: комментарий от voldemar1010
 ./brainflayer -h
Usage: ./brainflayer [OPTION]...

 -a                          open output file in append mode
 -b FILE                     check for matches against bloom filter FILE
 -f FILE                     verify matches against sorted hash160s in FILE
 -i FILE                     read from FILE instead of stdin
 -o FILE                     write to FILE instead of stdout
 -c TYPES                    use TYPES for public key to hash160 computation
                             multiple can be specified, for example the default
                             is 'uc', which will check for both uncompressed
                             and compressed addresses using Bitcoin's algorithm
                             u - uncompressed address
                             c - compressed address
                             e - ethereum address
                             x - most signifigant bits of x coordinate
 -t TYPE                     inputs are TYPE - supported types:
                             sha256 (default) - classic brainwallet
                             sha3   - sha3-256
                             priv   - raw private keys (requires -x)
                             warp   - WarpWallet (supports -s or -p)
                             bwio   - brainwallet.io (supports -s or -p)
                             bv2    - brainv2 (supports -s or -p) VERY SLOW
                             rush   - rushwallet (requires -r) FAST
                             keccak - keccak256 (ethercamp/old ethaddress)
                             camp2  - keccak256 * 2031 (new ethercamp)
 -x                          treat input as hex encoded
 -s SALT                     use SALT for salted input types (default: none)
 -p PASSPHRASE               use PASSPHRASE for salted input types, inputs
                             will be treated as salts
 -r FRAGMENT                 use FRAGMENT for cracking rushwallet passphrase
 -I HEXPRIVKEY               incremental private key cracking mode, starting
                             at HEXPRIVKEY (supports -n) FAST
 -k K                        skip the first K lines of input
 -n K/N                      use only the Kth of every N input lines
 -B                          batch size for affine transformations
                             must be a power of 2 (default/max: 4096)
 -w WINDOW_SIZE              window size for ecmult table (default: 16)
                             uses about 3 * 2^w KiB memory on startup, but
                             only about 2^w KiB once the table is built
 -m FILE                     load ecmult table from FILE
                             the ecmtabgen tool can build such a table
 -v                          verbose - display cracking progress
 -h                          show this help

gcc-4.9.4

kickass
()
Ответ на: комментарий от kickass

убрал в файле make -static Вроде пошло строка помощь тоже заработало Интересно а весь остальной функционал работает? будем пробовать. Спасибо что все помогали )))

voldemar1010
() автор топика
15 марта 2020 г.

Полностью готовая к работе виртуальная машина с Brainflayer развертывается на VMware,25 млн. адресов в базе генератор bip39 бери и пользуйся.На рабочем столе текстовик с командами запуска и настройки,все на русском собирал сам лично,камни не кидать ибо я всего лишь любитель. https://gyg27.livejournal.com/

Gyg27
()
15 мая 2020 г.
12 сентября 2020 г.
2 августа 2021 г.
Ответ на: комментарий от LogIN

Новая сборка которая теперь делает все появилась там же.

Gyg27
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.