Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在Linux(Ubuntu)中使用FreeImage库静态编译C/C++应用程序?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我正在关注 this的例子.但是,我想为给定的玩具示例代码编译静态二进制文件.通常,我在编译期间使用-static,但这里给出了一条错误消息. 编译命令工作正常: g++ freeimagetest.cpp -o freeimagetest -lfreeimageplus 编译命令不能正常工作: g++ freeimagetest.cpp -o freeimagetest -lfreeimagep
我正在关注 this的例子.但是,我想为给定的玩具示例代码编译静态二进制文件.通常,我在编译期间使用-static,但这里给出了一条错误消息.

编译命令工作正常:

g++ freeimagetest.cpp -o freeimagetest -lfreeimageplus

编译命令不能正常工作:

g++ freeimagetest.cpp -o freeimagetest -lfreeimageplus -static

错误消息的最后几行:

In function `ZIPPreDecode':
(.text+0x6f8): undefined reference to `inflateReset'
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib/libfreeimageplus.a(tif_zip.o): In function `ZIPSetupDecode':
(.text+0x783): undefined reference to `inflateInit_'
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib/libfreeimageplus.a(tif_zip.o): In function `ZIPSetupDecode':
(.text+0x7b4): undefined reference to `deflateEnd'
collect2: ld returned 1 exit status

那么如何完成/修复呢?

编辑:我看不到附加的链接如何解决我的问题.显然,它看起来,由于错误消息,我试图静态编译它的方式存在一些问题.我找不到正确的方法.我认为错误信息是错误的 – 它只是以这些行结束(这些行不到所有消息的百分之一).任何做过它的人都可以更好地回答.如果您认为您的答案不仅仅是一个有根据的猜测,我会请求您在回答之前尝试一下.如果您按照附件链接,只需几分钟.此外,我也标记了C,因为C语言程序也是如此.

解决方法

通常,当您静态链接库(而不是动态链接它)时,您还需要手动链接其所有依赖项.你需要找出它缺少的库(依赖)并将其链接起来.

快速谷歌搜索显示inflateReset来自名为zlib的库.因此,您需要使用-lz链接它.您很可能已在编译器搜索目录中拥有此库,但如果不这样,则需要手动编译它.

大佬总结

以上是大佬教程为你收集整理的如何在Linux(Ubuntu)中使用FreeImage库静态编译C/C++应用程序?全部内容,希望文章能够帮你解决如何在Linux(Ubuntu)中使用FreeImage库静态编译C/C++应用程序?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: