Comment ajouter un lien vers une bibliothèque dans le script de configuration autoconf / makefile

StackOverflow https://stackoverflow.com/questions/2057472

  •  20-09-2019
  •  | 
  •  

Question

Je suis un newb de autotools et j'ai du mal à comprendre howto facilement lier une bibliothèque spécifique dans l'une des cibles configurées.

J'ai un paquet source que je veux construire la manière habituelle: ./configure && make && make install

Malheureusement, l'un des CPPS a une référence manquante à une autre bibliothèque. Compilant manuellement (réglage de la ligne de commande) fonctionne. Mais je préférerais "Patch" le script de compilation. Où est l'endroit standard pour modifier lier les références?

 undefined reference to `boost::system::get_system_category()

C'est mon message d'erreur btw.

Était-ce utile?

La solution

Vous devez ajouter le drapeau -l correspondant à AM_LDFLAGS dans Makefile.am; par exemple:.

AM_LDFLAGS = -lboost_system-mt

Notez que les bibliothèques Boost se terminent généralement dans un suffixe une séquence de lettres qui indique la configuration de construction. Dans l'exemple ci-dessus, le suffixe est -mt. Cela pourrait être différent dans votre installation (bien que la variante -mt est généralement disponible sur les systèmes POSIXy, IME).

Je fais quelque chose comme ceci:

AM_LDFLAGS = -lboost_system$(BOOST_LIB_SUFFIX)

BOOST_LIB_SUFFIX est une variable précieux (voir AC_ARG_VAR) que les valeurs par défaut pour -mt.

Autres conseils

Utilisez ax_cxx_check_lib.m4 parce que boost_system n'a pas de symboles externat « C » (noms non substantypés) qui peut être vérifié avec AC_CHECK_LIB:

http://ac-archive.sourceforge.net/guidod/ax_cxx_check_lib.m4

Télécharger le fichier ci-dessus et nommez-le acinclude.m4, et le mettre dans le dossier m4 dans la racine de votre projet.

En configure.ac:

AC_LANG_PUSH([C++])

AX_CXX_CHECK_LIB([boost_system-mt],[boost::system::generic_category()],[BOOST_LIB_SUFFIX="-mt"],[BOOST_LIB_SUFFIX=""])

AC_LANG_POP([C++])

AC_SUBST(BOOST_LIB_SUFFIX)

En Makefile.am:

[artifact_name]_LDFLAGS = -lboost_system@BOOST_LIB_SUFFIX@
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top