使用g ++静态链接matio库

时间:2015-01-16 12:01:47

标签: c++ static-linking matio

如何静态链接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库,即使我使用 ./ configure --without-libz 配置和编译了matio?

1 个答案:

答案 0 :(得分:2)

要在没有zlib的情况下构建matio,您显然需要使用

调用configure
./configure --with-zlib=no

(从configure.acconfig/matio_zlib.m4查看此内容。)

如果你想用icc构建matio,英特尔的developer pages告诉你,Linux上的libirc.a和Windows上的libirc.lib中定义了 __ intel_sse2_strlen

使用gcc编译matio

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

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