저는 g ++ 및 Makefile을 처음 사용합니다. lib 디렉토리에있는이 BeBOP SMC 라이브러리를 연결하려고합니다. lib 디렉토리 아래에는 이미 bebop_util과 sparse_matrix_converter가 있으며, 둘 다 이미 오류없이 빌드되었습니다. libbebop_util.a, libbebop_util.so가 bebop_util 아래에 있고 libsparse_matrix_converter.a, libsparse_matrix_converter.so가 sparse_matrix_converter 아래에 있습니다. 아래는 소스입니다 :g ++ 링크로 인해 정의되지 않은 참조
메이크
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;
}
출력 :
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
test.cpp는 bebop_util에 의존하는 sparse_matrix_converter에 의존합니다. 내가 실수했을 때 어떤 실수를했는지 알려주시겠습니까? 감사.
톰
당신이 -lbebop_util -lsparse_matrix_converter에 연결하고, 그 이름이 모두 보이지 않습니다. 모든 것을 연결 했습니까? –
주석 주셔서 감사합니다. 나는 모든 것에 연결되어 있다고 생각합니다. sparse_matrix_converter가 기본 라이브러리입니다. 라이브러리는 BeBOP SMC라고합니다. SMC는 스파 스 매트릭스 변환기의 약자입니다. –