mingw32环境下连接库找不到问题

Dreaming-in-Gottingen 2020-11-15 原文


mingw32环境下链接库找不到问题

本人在win10下安装了mingw环境,以方面windows下测试gcc编译器构建一些开源组件。但是windows系统下遇到了一些编译问题。

1. 问题现象

  一次手写的Makefile遇到了如下编译错误:

1 $ make
2 g++ -I ../include  -fPIC -c JpegDecoder.cpp -o JpegDecoder.o
3 g++ -o JpegDecoder JpegDecoder.o -L../libs -lcodec_utils
4 d:/ProgramFiles/mingw-w64/mingw32/bin/../lib/gcc/i686-w64-mingw32/8.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -lcodec_utils
5 collect2.exe: error: ld returned 1 exit status
6 make: *** [JpegDecoder] Error 1

  可是,在linux平台上编译这段代码完全没问题。。。见什么鬼了???

2. 错误原因分析

  直接提示表明,欲生成JpegDecoder的可执行文件,需要链接动态库libcodec_utils.so,但是找不到这个这个库文件,因此出现了这个链接错误提示。

3. 编译知识回顾

  一般理论常识是:-L参数指定了库的目录,-lxyz参数指定库名。例如,本次链接的动态名称为libcodec_utils.so,该库位于上级目录的libs文件夹下。

4. 疑问

  我再次确认,库目录和库文件都存在,Makefile写的应该没问题!况且在Linux平台下编译通过了!但为什么在win下还是报错???

5. 答案分析

  由于使用的连接器ld.exe是运行在window系统下的,可能跟linxu平台下的使用方法稍有区别。

  windows下查看命令行查看:ld –help,找到了一些链接参数信息:

  

   其中,-l LIBNAME表示,要写成-l libcodec_utils.so形式,而不能做一些省略,例如去掉“lib”和“.so”。(真正验证时,还不是这种情况!!!

  在Linux平台下,显示一样的信息。可能是linux平台下,将参数“-lcodec_utils”自动补全为“-l libcodec_utils.so”形式。

6. 验证结论

  6.1 参数形式:“-L../libs -lcodec_utils”

  

  6.2 参数形式:“-L../libs -l libcodec_utils.so”

  

   注意,错误提示跟6.1的稍微有些区别,系统自动添加了前缀“-l”到库名前,变成了“-llibcodec_utils.so”库找不到。

  6.3 参数形式:“-L../libs libcodec_utils.so”

  

  这是在windows平台下唯一的正确的参数。

发表于
2020-11-15 01:43 
OnlyTime_唯有时光 
阅读(0
评论(0
编辑 
收藏

 

版权声明:本文为Dreaming-in-Gottingen原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Dreaming-in-Gottingen/p/13975519.html

mingw32环境下连接库找不到问题的更多相关文章

随机推荐

  1. C++标准模板库(STL)——queue常见用法详解

    标准模板库(STL)是程序员定义的数据类型和算法的集合,可供 C++ 程序使用。这些数据类型和算法不是 C++ […]...

  2. 本来是想用集合的方式来读取request.form 信息的,但是不知道为什么,啥都不显示,麻烦给点高见蛮!! – 天轰穿

    本来是想用集合的方式来读取request.form 信息的,但是不知道为什么,啥都不显示,麻烦给点高见蛮!! […]...

  3. 搭建Redis三主三从集群

    Redis三主三从集群规划 10.0.128.19   使用端口 7000  7001 10.0.128.22 […]...

  4. ES 2021 来了,详细解读5个新特性,附案例

    ES 2021是世界上最受欢迎的编程语言的最新版本〜本次迭代中包含了五个新特性,让我们来一睹为快。 ES 20 […]...

  5. 21个国外受欢迎的学习编程的网站:总有一个理由会让你爱上它们

    Kristyna Z.,她是Maqtoob.com的 CEO及创业者顾问,在她最近发表的一篇博客(44 New […]...

  6. dva-quickstart 与 create-react-app 比较(一)

    最近在学习 React ,  现对 dva-quickstart   与  create-react-app […]...

  7. std::thread线程库详解(2)

    目录 目录 简介 最基本的锁 std::mutex 使用 方法和属性 递归锁 std::recursive_m […]...

  8. 这又是产品经理不当人的一天

    起因是我们亲爱的产品经理让我评估项目。。。       注:该狗头为我们亲爱的产品经理 这可是他用了n多年的头 […]...

展开目录

目录导航