2
當我嘗試構建應用程序時,出現鏈接器錯誤undefined reference to (..)
。所有未找到的函數都從meschach庫中導入。在我看來庫已正確安裝:使用meschach庫構建應用程序時出現鏈接器錯誤
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'])
我使用Arch Linux的64位。
編輯:我SCons的替換用的Makefile,但錯誤依然存在:
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
嘗試添加libmeschach到庫列表,即嘗試將LIBS = ['m']'改爲LIBS = ['m','meschach']'。請檢查[此鏈接](http://www.scons.org/doc/0.97/HTML/scons-user/x628.html)以獲取更多關於鏈接的信息。 –
不幸的是,它沒有幫助。 –
嗯,當實際編譯發生時,你是否看到鏈接的庫或任何東西?你能檢查確切的'gcc'編譯命令,你得到這個錯誤? –