2012-12-13 2 views
2

응용 프로그램을 빌드하려고하면 링커 오류 undefined reference to (..)가 표시됩니다. 발견되지 않은 모든 기능은 메신저 라이브러리에서 가져옵니다. 제 생각에는 라이브러리가 제대로 설치되어 :메쉬 라이브러리로 응용 프로그램을 빌드 할 때 링커 오류가 발생합니다.

whereis libmeschach 
libmeschach: /lib/libmeschach.so /usr/lib/libmeschach.so /lib64/libmeschach.so 

내 SCons는 파일 :

import os 
import sys 
import functools 

PROJECT_ROOT = os.path.curdir 
doc_path = functools.partial(os.path.join, PROJECT_ROOT, 'doc') 
src_path = functools.partial(os.path.join, PROJECT_ROOT, 'src') 
out_path = functools.partial(os.path.join, PROJECT_ROOT, 'build') 

cpp_flags = { 
    'linux2' : '-Wall -Wextra -pedantic -fopenmp -O3', 
    'win32' : '/w /MD /openmp' 
} 

env = Environment(ENV=os.environ,CPPFLAGS=cpp_flags[sys.platform])  
env.VariantDir(variant_dir=out_path(),src_dir=src_path()) 

env.Program(target=out_path('cholesky'), source=Glob(out_path('*.cpp')), LIBS=['m']) 

내가 아치 리눅스 64 비트를 사용합니다.

편집 : 나는 메이크 SCons는 대체하지만 오류가 여전히 남아 : 좋아

CC=g++ 
CFLAGS=-c -Wall -Wextra -pedantic -I./externals/include 
LIB=./externals/lib/meschach.a -lm 

all: cholesky 

cholesky: cholesky.o equation.o testing.o profiler.o parallelCholeskyTest.o matrix.o 
$(CC) cholesky.o equation.o testing.o profiler.o parallelCholeskyTest.o matrix.o -o 
    main $(LIB) 

cholesky.o: 
$(CC) $(CFLAGS) src/cholesky.cpp 

equation.o: matrix.o 
$(CC) $(CFLAGS) src/equation.cpp 

matrix.o: 
$(CC) $(CFLAGS) src/matrix.cpp 

testing.o: 
$(CC) $(CFLAGS) src/testing.cpp 

profiler.o: 
$(CC) $(CFLAGS) src/profiler.cpp 

parallelCholeskyTest.o: 
$(CC) $(CFLAGS) src/parallelCholeskyTest.cpp 
+2

라이브러리리스트에'libmeschach'를 추가하십시오. 즉,'LIBS = [ 'm']'을'LIBS = [ 'm', 'meschach']'로 변경하십시오. 연결에 대한 자세한 내용은 [이 링크] (http://www.scons.org/doc/0.97/HTML/scons-user/x628.html)를 확인하십시오 –

+0

Unfortunatelly 도움이되지 않았습니다. –

+0

흠 실제 컴파일이 일어 났을 때 라이브러리가 링크되어있는 것을 보시겠습니까? 이 오류가 발생한 정확한 'gcc'컴파일 명령을 확인할 수 있습니까? –

답변

1

. 나는 그것을 해결했다. 이 라이브러리는 C++ 라이브러리로 포함될 수 없으므로 각 #includeextern "C" { }으로 묶어야합니다. 이 문제에 대해 더 자세히 알 수 있습니다 : C-library not linking using gcc/g++

관련 문제