2015-03-31 3 views
0

Я использую код в C для гидромониторинга с передачей излучения. Существует потребность в PETSc, которую я скомпилировал на своей локальной машине. Но при компиляции моего кода я получаю сообщение об ошибке: error: ’__SDIR__’ undeclared (первое использование в этой функции). Файл makefile имеет:Ошибка PETSc для mpicc

include $(PETSC_DIR)/conf/variables 
CFLAGS += $(PETSC_INCLUDE) 
CFLAGS += $(PETSC_CC_INCLUDES) 
LDFLAGS += $(PETSC_KSP_LIB) 

Может ли кто-нибудь предложить решение?

ответ

0

Параметры компоновщика должны иметь ссылки на библиотеки (пути, а затем имена библиотек) после любых объектных файлов. Это связано с тем, что библиотеки используются для разрешения символов, а параметры обрабатываются в том порядке, в котором они перечислены, слева направо. поэтому, когда библиотека отображается рано, перед некоторым объектным файлом, где объектный файл создает неразрешенный символ, библиотека не будет использоваться для разрешения символа. Предложите поместить пути библиотеки и имена библиотек последним на линии компоновщика.

Смежные вопросы