您如何将matt和octave主要使用的用于读取mat文件的库matio静态链接到可执行文件中?

如果文件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的 undefined reference 。因此看来zlib库对于编译是必需的。

我现在有以下问题:
  • 要在可执行文件中静态链接Matio库,您需要做什么?
  • 即使我使用./configure --without-libz配置和编译了matio,为什么还需要添加zlib库?
  • 最佳答案

    要在没有zlib的情况下构建Matio,您显然需要使用以下命令调用configure

    ./configure --with-zlib=no
    

    (已从configure.acconfig/matio_zlib.m4进行了检查。)

    如果要使用icc构建matio,英特尔的developer pages会告诉__intel_sse2_strlen是在Linux的libirc.a和Windows的libirc.lib中定义的。

    用gcc编译matio吗
    ./configure --with-zlib=no CC=gcc
    

    之后,matio库可以与问题中发布的调用静态链接

    关于c++ - 使用G++静态链接Matio库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27983513/

    10-11 19:07