LINUX.ORG.RU

Линковка своей библиотеки к стороннему проекту

 ,


0

1

Коллеги в продолжении этой темы Помогите с мануалом для переписывания Windows only библиотеке

Пытаюсь уже сюда так же как этот товарищ ( https://bitcoin.stackexchange.com/questions/67809/adding-new-files-to-makefil... ) добавить свой код . Добавил своb библиотеки в src/Makefile.am в bgoldd_LDADD , libbitcoin_consensus_a_SOURCES , BITCOIN_CORE_H

Однако все равно ругается что не может найти мои обьявления (

 /bin/sh ../libtool --silent --tag=CXX --preserve-dup-deps  --mode=link g++ -std=c++11  -Wstack-protector -fstack-protector-all -Wall -Wextra -Wformat -Wvla -Wno-unused-parameter -Wno-implicit-fallthrough    -fPIE -g -O2 -Ilibs/include/ -Ilibs/include/util -Ilibs/include/params -Ilibs/include/gmp -Ilibs/include/contracts -Ilibs/include/blockchain/store -Ilibs/include/blockchain/changes  -Ilibs/include/blockchain -Ilibs/include/auditor/store -Ilibs/include/auditor  -pthread  -Wl,-z,relro -Wl,-z,now -pie      -o bgoldd bgoldd-bitcoind.o  libbitcoin_server.a libbitcoin_wallet.a libbitcoin_common.a univalue/libunivalue.la libbitcoin_util.a  libbitcoin_consensus.a crypto/libbitcoin_crypto_base.a crypto/libbitcoin_crypto_sse41.a crypto/libbitcoin_crypto_avx2.a crypto/libbitcoin_crypto_shani.a leveldb/libleveldb.a leveldb/libleveldb_sse42.a leveldb/libmemenv.a secp256k1/libsecp256k1.la -L/usr/lib64 -lboost_system -lboost_filesystem -lboost_thread -lboost_chrono -ldb_cxx-4.8 -lssl  -lcrypto  -lminiupnpc -levent_pthreads -levent  -levent   -lcrypto -lb2  -lb2 
/usr/bin/ld: libbitcoin_consensus.a(libbitcoin_consensus_a-interpreter.o): in function `EvalScript(std::vector<std::vector<unsigned char, std::allocator<unsigned char> >, std::allocator<std::vector<unsigned char, std::allocator<unsigned char> > > >&, CScript const&, unsigned int, BaseSignatureChecker const&, SigVersion, ScriptError_t*)':
/src/script/interpreter.cpp:456: undefined reference to `Ctx::getDefault()'

★★★★★

Ответ на: комментарий от invy

Там autotools и перебраться никак нельзя

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

Можно попробовать добавить -Wl,--start-group и -Wl,--end-group руками и выполнить. Как-то так:

../libtool --silent --tag=CXX --preserve-dup-deps  --mode=link g++ -std=c++11  -Wstack-protector -fstack-protector-all -Wall -Wextra -Wformat -Wvla -Wno-unused-parameter -Wno-implicit-fallthrough    -fPIE -g -O2 -Ilibs/include/ -Ilibs/include/util -Ilibs/include/params -Ilibs/include/gmp -Ilibs/include/contracts -Ilibs/include/blockchain/store -Ilibs/include/blockchain/changes  -Ilibs/include/blockchain -Ilibs/include/auditor/store -Ilibs/include/auditor  -pthread  -Wl,-z,relro -Wl,-z,now -pie      -o bgoldd -Wl,--start-group bgoldd-bitcoind.o  libbitcoin_server.a libbitcoin_wallet.a libbitcoin_common.a univalue/libunivalue.la libbitcoin_util.a  libbitcoin_consensus.a crypto/libbitcoin_crypto_base.a crypto/libbitcoin_crypto_sse41.a crypto/libbitcoin_crypto_avx2.a crypto/libbitcoin_crypto_shani.a leveldb/libleveldb.a leveldb/libleveldb_sse42.a leveldb/libmemenv.a secp256k1/libsecp256k1.la -L/usr/lib64 -lboost_system -lboost_filesystem -lboost_thread -lboost_chrono -ldb_cxx-4.8 -lssl  -lcrypto  -lminiupnpc -levent_pthreads -levent  -levent   -lcrypto -lb2  -lb2  -Wl,--end-group

Если ошибки не будет, значит что-то с порядком (выходной файл уже будет создан, если цель только в его получении).

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

Все тоже самое дает (

/usr/bin/ld: libbitcoin_consensus.a(libbitcoin_consensus_a-interpreter.o): in function `EvalScript(std::vector<std::vector<unsigned char, std::allocator<unsigned char> >, std::allocator<std::vector<unsigned char, std::allocator<unsigned char> > > >&, CScript const&, unsigned int, BaseSignatureChecker const&, SigVersion, ScriptError_t*)':
/src/script/interpreter.cpp:456: undefined reference to `Ctx::getDefault()'

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

Да тута , но я его уже подключил давно #include «include/Сtx.h»

А обьявлен там просто

...
using namespace std;

class Ctx
{

public:
	...
	static shared_ptr<Ctx> getDefault();;

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

обьявлен

Объявление он находит, раз компилирует. Я за определение спрашивал. В Ctx.cpp? В какой он библиотеке?

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

Точнее и там пробовал и в ctx.h

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