2013-08-23 4 views
0

Я чувствую себя несколько смешно, но я пытаюсь импортировать библиотеки OpenBLAS в проект. Они были построены с помощью gfortran в качестве компилятора Fortran. У моих ранних сборников не было проблем, просто потянув libopenblas.so, но в другой системе он задыхается от libgfortran.so, когда я пытаюсь запустить нашу программу, которой там не существует. Мое впечатление было то, что это стандартная библиотека для большинства, если не для всех, систем Linux. Вероятно, я мог бы добавить копию в Artifactory libgfortran.so и позволить Apache Ivy втянуть ее, но, похоже, имеет смысл использовать стандартную версию, если это возможно. Есть ли хороший способ втянуть его через Ivy при выполнении команды ant resolve, если она не существует в системе?Как заставить непредвиденные зависимости построения стандартных библиотек

Альтернативным решением может быть статически libgfortran.a в в системе компиляции, но мои попытки сделать это, добавив -static RELATIVE_PATH_TO_LIBS/libgfortran.a компилировать и компоновать штраф, но я все еще получаю ошибки при выполнении указанной программы в системе, которая испытывает недостаток в библиотеку.

Благодарим за помощь, которую вы можете предоставить.

ответ

1

Если исполняемый формат файла формат файла «ELF» (по умолчанию в системах Linux), вы можете использовать «readelf», чтобы отобразить динамическую часть исполняемого файла:

readelf -d my_executable_file 

Он должен содержать список требуются все разделяемые библиотеки. Это возможность проверить, нуждается ли исполняемый файл в этой библиотеке.

Если «libgfortran.so» проблема и «libgfortran.a» доступна я бы переименовать «libgfortran.a» в «libxxxx.a» и использовать компоновщик переключатели:

-Lpath_containing_libxxxx.a -lxxxx 

вместо "-lgfortran". Я бы не использовал «-статический» переключатель, потому что в этом случае компоновщик также пытается статически связывать все остальные библиотеки. Компонент должен автоматически связывать «-lxxxx» статически, потому что нет динамической библиотеки с этим именем.

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