使用 g++ 静态链接 matio 库
Statically linking matio library using g++
如何静态地 link 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
现在错误消息与 undefined reference to `__intel_sse2_strlen' 不同。因此看来 zlib 库对于编译是必需的。
我现在有以下问题:
- 要静态 link 可执行文件中的 matio 库,您需要做什么?
- 为什么我需要添加 zlib 库,即使我使用 ./configure --without-libz 配置和编译了 matio?
要在没有 zlib 的情况下构建 matio,您显然需要使用
调用配置
./configure --with-zlib=no
(从 configure.ac
和 config/matio_zlib.m4
中检查了这个。)
如果您想使用 icc 构建 matio,Intel 的 developer pages 会告诉您 __intel_sse2_strlen 在 [=31 上的 libirc.a 中定义=] 和 libirc.lib 在 Windows.
用 gcc 编译 matio
./configure --with-zlib=no CC=gcc
之后,matio 库可与问题中发布的调用静态链接
如何静态地 link 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
现在错误消息与 undefined reference to `__intel_sse2_strlen' 不同。因此看来 zlib 库对于编译是必需的。
我现在有以下问题:
- 要静态 link 可执行文件中的 matio 库,您需要做什么?
- 为什么我需要添加 zlib 库,即使我使用 ./configure --without-libz 配置和编译了 matio?
要在没有 zlib 的情况下构建 matio,您显然需要使用
调用配置./configure --with-zlib=no
(从 configure.ac
和 config/matio_zlib.m4
中检查了这个。)
如果您想使用 icc 构建 matio,Intel 的 developer pages 会告诉您 __intel_sse2_strlen 在 [=31 上的 libirc.a 中定义=] 和 libirc.lib 在 Windows.
用 gcc 编译 matio
./configure --with-zlib=no CC=gcc
之后,matio 库可与问题中发布的调用静态链接