Je suis nouveau sur g ++ et Makefile. J'essaye de lier cette bibliothèque de BeBOP SMC, qui est dans mon répertoire lib. Sous le répertoire lib sont bebop_util et sparse_matrix_converter, les deux ont déjà été construits sans erreurs. Je vois libbebop_util.a, libbebop_util.so sous bebop_util et libsparse_matrix_converter.a, libsparse_matrix_converter.so sous sparse_matrix_converter. Ci-dessous la source:Référence indéfinie résultant de la liaison g ++
Makefile
CC=g++
CFLAGS=-c -Wall
test.out: test.o
$(CC) -o test.out -Ilib/sparse_matrix_converter/include -Llib/bebop_util \
-Llib/sparse_matrix_converter -lbebop_util -lsparse_matrix_converter test.o
test.o: test.cpp
$(CC) $(CFLAGS) -Ilib/sparse_matrix_converter/include test.cpp
clean:
rm -f test.o test.out
test.cpp
#include <bebop/smc/sparse_matrix.h>
#include <bebop/smc/sparse_matrix_ops.h>
int main(int argc, const char* argv[])
{
struct sparse_matrix_t* A = load_sparse_matrix (MATRIX_MARKET, "sample_input");
destroy_sparse_matrix(A);
return 0;
}
Sortie:
login3% make
g++ -c -Wall -Ilib/sparse_matrix_converter/include test.cpp
g++ -o test.out -Ilib/sparse_matrix_converter/include -Llib/bebop_util -Llib/sparse_matrix_converter -lbebop_util -lsparse_matrix_converter test.o
test.o: In function `main':
test.cpp:(.text+0x1a): undefined reference to `load_sparse_matrix(sparse_matrix_file_format_t, char const*)'
test.cpp:(.text+0x27): undefined reference to `destroy_sparse_matrix(sparse_matrix_t*)'
collect2: ld returned 1 exit status
make: *** [test.out] Error 1
Veuillez noter que test.cpp dépend de sparse_matrix_converter, qui dépend de bebop_util. Voulez-vous s'il vous plaît me faire savoir quelles erreurs j'ai pu faire? Merci.
Tom
vous liez contre -lsparse_matrix_converter -lbebop_util, ces deux noms ne ressemblent pas qu'ils seraient grandes bibliothèques. Êtes-vous sûr de tout avoir lié? –
Merci pour le commentaire. Je pense que j'ai lié à tout. sparse_matrix_converter est la bibliothèque principale. La bibliothèque s'appelle BeBOP SMC. SMC est l'abréviation de «matrix matrix converter». –