Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/04/2020, à 23:38

hamido10002000

Probleme au niveau de compilation ?? [résolut]

Salut a tous ,

je viens de compiler un code source sur un livre "Mastering Bitcoin"

#include <bitcoin/bitcoin.hpp>

int main()
{
    // Private secret key string as base16
    bc::ec_secret decoded;
    bc::decode_base16(decoded,"038109007313a5807b2eccc082c8c3fbb988a973cacf1a7df9ce725c31b14776");

    bc::wallet::ec_private secret(decoded, bc::wallet::ec_private::mainnet_p2kh);

    // Get public key.
    bc::wallet::ec_public public_key(secret);
    std::cout << "Public key: " << public_key.encoded() << std::endl;

    // Create Bitcoin address.
    // Normally you can use:
    //    bc::wallet::payment_address payaddr =
    //        public_key.to_payment_address(
    //            bc::wallet::ec_public::mainnet_p2kh);
    //  const std::string address = payaddr.encoded();

    // Compute hash of public key for P2PKH address.
    bc::data_chunk public_key_data;
    public_key.to_data(public_key_data);
    const auto hash = bc::bitcoin_short_hash(public_key_data);

    bc::data_chunk unencoded_address;
    // Reserve 25 bytes
    //   [ version:1  ]
    //   [ hash:20    ]
    //   [ checksum:4 ]
    unencoded_address.reserve(25);
    // Version byte, 0 is normal BTC address (P2PKH).
    unencoded_address.push_back(0);
    // Hash data
    bc::extend_data(unencoded_address, hash);
    // Checksum is computed by hashing data, and adding 4 bytes from hash.
    bc::append_checksum(unencoded_address);
    // Finally we must encode the result in Bitcoin's base58 encoding.
    assert(unencoded_address.size() == 25);
    const std::string address = bc::encode_base58(unencoded_address);

    std::cout << "Address: " << address << std::endl;
    return 0;
}

et j'ai compilé ce code

user@user-Inspiron-N5110:~$ g++ -o addr addr.cpp -std=c++11 -lgmp $(pkg-config --cflags --libs libbitcoin)
/home/user/myprefix/lib/libsecp256k1.a(libsecp256k1_la-secp256k1.o) : Dans la fonction « secp256k1_num_mod_inverse » :
/home/user/build-libbitcoin/secp256k1/src/num_gmp_impl.h:128 : référence indéfinie vers « __gmpn_gcdext »
/home/user/myprefix/lib/libsecp256k1.a(libsecp256k1_la-secp256k1.o) : Dans la fonction « __gmpn_sub » :
/usr/include/x86_64-linux-gnu/gmp.h:2190 : référence indéfinie vers « __gmpn_sub_n »
/home/user/myprefix/lib/libsecp256k1.a(libsecp256k1_la-secp256k1.o) : Dans la fonction « secp256k1_num_set_bin » :
/home/user/build-libbitcoin/secp256k1/src/num_gmp_impl.h:49 : référence indéfinie vers « __gmpn_set_str »
/home/user/build-libbitcoin/secp256k1/src/num_gmp_impl.h:49 : référence indéfinie vers « __gmpn_set_str »
/home/user/myprefix/lib/libsecp256k1.a(libsecp256k1_la-secp256k1.o) : Dans la fonction « secp256k1_num_get_bin » :
/home/user/build-libbitcoin/secp256k1/src/num_gmp_impl.h:34 : référence indéfinie vers « __gmpn_get_str »
/home/user/myprefix/lib/libsecp256k1.a(libsecp256k1_la-secp256k1.o) : Dans la fonction « secp256k1_num_set_bin » :
/home/user/build-libbitcoin/secp256k1/src/num_gmp_impl.h:49 : référence indéfinie vers « __gmpn_set_str »
/home/user/build-libbitcoin/secp256k1/src/num_gmp_impl.h:49 : référence indéfinie vers « __gmpn_set_str »
/home/user/myprefix/lib/libsecp256k1.a(libsecp256k1_la-secp256k1.o) : Dans la fonction « secp256k1_num_get_bin » :
/home/user/build-libbitcoin/secp256k1/src/num_gmp_impl.h:34 : référence indéfinie vers « __gmpn_get_str »
collect2: error: ld returned 1 exit status

Quelqu'un a une aidé pour régler ce probleme

Dernière modification par hamido10002000 (Le 13/04/2020, à 19:09)

Hors ligne

#2 Le 13/04/2020, à 00:06

noje

Re : Probleme au niveau de compilation ?? [résolut]

Bonjour,
Il vous manque peut-être cette librairie de développement libgmp3-dev à vérifier.

sudo apt-get install libgmp3-dev

Merci de redire si ça solutionne ou non ?


- LTS 18.04 & 22.04 - jwm - cwm - zsh

Les seules vraies erreurs sont celles que nous commettons à répétition.
Les autres sont des occasions d'apprentissage. (Dalaï Lama)

Hors ligne

#3 Le 13/04/2020, à 00:15

hamido10002000

Re : Probleme au niveau de compilation ?? [résolut]

noje a écrit :

Bonjour,
Il vous manque peut-être cette librairie de développement libgmp3-dev à vérifier.

sudo apt-get install libgmp3-dev

Merci de redire si ça solutionne ou non ?

Merci pour la réponse , j'ai ré-exécuté la commande kibgmp3-dev mais malheureusement toujours les même erreurs

Dernière modification par hamido10002000 (Le 13/04/2020, à 00:18)

Hors ligne

#4 Le 13/04/2020, à 02:02

noje

Re : Probleme au niveau de compilation ?? [résolut]

Je pense qu’il vous manques le fichier gmp.h, pouvez vous regarder s’il est bien installé avec le paquet sus-mentionné.
Cette erreur est récurrentes pour ce soucis de compilation donc le plus fréquent.

ls /usr/include/gmp.h
locate gmp.h

Ça donne quoi ?

Dernière modification par noje (Le 13/04/2020, à 02:02)


- LTS 18.04 & 22.04 - jwm - cwm - zsh

Les seules vraies erreurs sont celles que nous commettons à répétition.
Les autres sont des occasions d'apprentissage. (Dalaï Lama)

Hors ligne

#5 Le 13/04/2020, à 06:45

hamido10002000

Re : Probleme au niveau de compilation ?? [résolut]

noje a écrit :

Je pense qu’il vous manques le fichier gmp.h, pouvez vous regarder s’il est bien installé avec le paquet sus-mentionné.
Cette erreur est récurrentes pour ce soucis de compilation donc le plus fréquent.

ls /usr/include/gmp.h
locate gmp.h

Ça donne quoi ?

user@user-Inspiron-N5110:~$ ls /usr/include/gmp.h
ls: impossible d'accéder à '/usr/include/gmp.h': Aucun fichier ou dossier de ce type
user@user-Inspiron-N5110:~$ locate gmp.h
/home/user/.local/share/Trash/files/myprefix/include/boost/multiprecision/gmp.hpp
/home/user/bitcoin/src/secp256k1/src/num_gmp.h
/usr/include/boost/multiprecision/gmp.hpp
/usr/include/linux/igmp.h
/usr/include/netinet/igmp.h
/usr/include/x86_64-linux-gnu/gmp.h
/usr/src/linux-headers-4.15.0-29/include/linux/igmp.h
/usr/src/linux-headers-4.15.0-29/include/uapi/linux/igmp.h
user@user-Inspiron-N5110:~$ 

Hors ligne

#6 Le 13/04/2020, à 09:34

noje

Re : Probleme au niveau de compilation ?? [résolut]

Ok space tente d’ajouter le flag “ -lgmpxx ” avant -lgmp pour voir.

Dernière modification par noje (Le 13/04/2020, à 09:34)


- LTS 18.04 & 22.04 - jwm - cwm - zsh

Les seules vraies erreurs sont celles que nous commettons à répétition.
Les autres sont des occasions d'apprentissage. (Dalaï Lama)

Hors ligne

#7 Le 13/04/2020, à 10:46

hamido10002000

Re : Probleme au niveau de compilation ?? [résolut]

noje a écrit :

Ok space tente d’ajouter le flag “ -lgmpxx ” avant -lgmp pour voir.

user@user-Inspiron-N5110:~$ g++ -o addr addr.cpp -std=c++11 -lgmpxx -lgmp $(pkg-config --cflags --libs libbitcoin)
/home/user/myprefix/lib/libsecp256k1.a(libsecp256k1_la-secp256k1.o) : Dans la fonction « secp256k1_num_mod_inverse » :
/home/user/build-libbitcoin/secp256k1/src/num_gmp_impl.h:128 : référence indéfinie vers « __gmpn_gcdext »
/home/user/myprefix/lib/libsecp256k1.a(libsecp256k1_la-secp256k1.o) : Dans la fonction « __gmpn_sub » :
/usr/include/x86_64-linux-gnu/gmp.h:2190 : référence indéfinie vers « __gmpn_sub_n »
/home/user/myprefix/lib/libsecp256k1.a(libsecp256k1_la-secp256k1.o) : Dans la fonction « secp256k1_num_set_bin » :
/home/user/build-libbitcoin/secp256k1/src/num_gmp_impl.h:49 : référence indéfinie vers « __gmpn_set_str »
/home/user/build-libbitcoin/secp256k1/src/num_gmp_impl.h:49 : référence indéfinie vers « __gmpn_set_str »
/home/user/myprefix/lib/libsecp256k1.a(libsecp256k1_la-secp256k1.o) : Dans la fonction « secp256k1_num_get_bin » :
/home/user/build-libbitcoin/secp256k1/src/num_gmp_impl.h:34 : référence indéfinie vers « __gmpn_get_str »
/home/user/myprefix/lib/libsecp256k1.a(libsecp256k1_la-secp256k1.o) : Dans la fonction « secp256k1_num_set_bin » :
/home/user/build-libbitcoin/secp256k1/src/num_gmp_impl.h:49 : référence indéfinie vers « __gmpn_set_str »
/home/user/build-libbitcoin/secp256k1/src/num_gmp_impl.h:49 : référence indéfinie vers « __gmpn_set_str »
/home/user/myprefix/lib/libsecp256k1.a(libsecp256k1_la-secp256k1.o) : Dans la fonction « secp256k1_num_get_bin » :
/home/user/build-libbitcoin/secp256k1/src/num_gmp_impl.h:34 : référence indéfinie vers « __gmpn_get_str »
collect2: error: ld returned 1 exit status
user@user-Inspiron-N5110:~$ 

Hors ligne

#8 Le 13/04/2020, à 10:58

noje

Re : Probleme au niveau de compilation ?? [résolut]

Bon j'arrête ici et espère que tu vas avoir une réponse sur Stack échange où j'ai vu que tu avais mis un message, bon courage....


- LTS 18.04 & 22.04 - jwm - cwm - zsh

Les seules vraies erreurs sont celles que nous commettons à répétition.
Les autres sont des occasions d'apprentissage. (Dalaï Lama)

Hors ligne

#9 Le 13/04/2020, à 11:14

hamido10002000

Re : Probleme au niveau de compilation ?? [résolut]

noje a écrit :

Bon j'arrête ici et espère que tu vas avoir une réponse sur Stack échange où j'ai vu que tu avais mis un message, bon courage....

Merci noje pour tes efforts.

Hors ligne

#10 Le 13/04/2020, à 13:24

noje

Re : Probleme au niveau de compilation ?? [résolut]

Ben de rien ça n’apporte rien de plus pour toi, en espérant que tu trouves une réponse ailleurs ou trouves une solution toi même.
Si une solution est en place n'oublie pas de passer le post en résolu ça fait plaisir à nos admins...


- LTS 18.04 & 22.04 - jwm - cwm - zsh

Les seules vraies erreurs sont celles que nous commettons à répétition.
Les autres sont des occasions d'apprentissage. (Dalaï Lama)

Hors ligne

#11 Le 13/04/2020, à 19:08

hamido10002000

Re : Probleme au niveau de compilation ?? [résolut]

Et voila j'ai trouvé la solution, l'emplacement de l'option -lgmp.

g++ -o addr addr.cpp -std=c++11 $(pkg-config --cflags --libs libbitcoin) -lgmp

Merci noje smile

Hors ligne