Статическая компоновка библиотеки matio с использованием g ++

Как вы статически ссылки matio, библиотека для чтения mat-файлов, в основном используемая matlab и octave в исполняемый файл?

Если файл main.cpp содержит функциональность matio при вызове компилятора

g++ -o main main.cpp -Imatio/include matio/lib/libmatio.a

не удается с кучей сообщений об ошибках, таких как: неопределенная ссылка на `inflateEnd ‘. Это можно решить, добавив zlib к вызову компилятора:

g++ -o main main.cpp -Imatio/include matio/lib/libmatio.a -lz

Теперь сообщения об ошибках отличаются чем-то вроде неопределенная ссылка на `__intel_sse2_strlen ‘. Таким образом, похоже, что библиотека zlib необходима для компиляции.

Теперь у меня есть следующие вопросы:

  1. Что нужно сделать, чтобы статически связать библиотеку matio в исполняемый файл?
  2. Почему мне нужно добавить библиотеку zlib, хотя я настроил и скомпилировал matio с ./ configure —without-libz?

1

Решение

Для сборки matio без zlib вам, очевидно, нужно вызвать configure

./configure --with-zlib=no

(Проверил это из configure.ac а также config/matio_zlib.m4.)

Если вы хотите собрать matio с помощью icc, Intel страницы разработчика скажи что __intel_sse2_strlen определяется в libirc.a в Linux и libirc.lib в Windows.

Скомпилировать matio с помощью gcc do

./configure --with-zlib=no CC=gcc

после этого библиотека matio статически связана с вызовом, размещенным в вопросе

2

Другие решения


По вопросам рекламы [email protected]