【问题标题】:G++ linking with libpngG++ 与 libpng 的链接
【发布时间】:2012-09-19 18:47:12
【问题描述】:

我正在尝试使用 C++ 进行一些图像处理。我目前正在使用 OS X 10.7 并仅使用 makefile 和终端编写我的代码。我已经用macports安装了libpng,但还是无法链接。

g++ main.cpp -llibpng -O2 -o ImageManipulator

g++ main.cpp -lpng -O2 -o ImageManipulator

都失败了:

ld: library not found for -lpng

ld: library not found for -llibpng

有人知道如何在 OS X 上为此调用 g++ 吗?

【问题讨论】:

    标签: macos g++ macports libpng


    【解决方案1】:

    使用 -L/path/to/library_directory 让 g++ 知道在哪里可以找到 libpng(我忘记了 mac 端口安装库的位置)。

    【讨论】:

      【解决方案2】:

      我认为 macports 不会将其 lib 目录添加到 gcc 搜索的默认路径中。试试

      g++ main.cpp -L/opt/local/lib -lpng -O2 -o ImageManipulator
      

      【讨论】:

      • 这可行,但实际文件名是 libpng.a、libpng.dylib 和 libpng.la。为什么传递 -lpng 有效?不应该是-llibpng吗?
      • 好吧,在 *nix 之类的系统上,众所周知(我不确定它是否真的在某处标准化,但实际上在所有 *nixoid 系统上都是事实)一个库被称为 libXXX,所以传递 - lpng 将评估为“与 libpng.a (或 dylib,so 或其他)链接”。唯一不使用的候选者是 Windows,其中库通常命名为 XXXlib.lib 或 XXX.lib :-) 如果您通过 -llibpng,则评估结果为“与 liblibpng 链接,因此它不起作用......
      • 因此为什么我不使用 windows 来处理这些类型的事情哈哈。谢谢!
      【解决方案3】:

      在尝试安装 gem (Mac OSX / Homebrew) 时遇到此错误。通过运行brew update && brew install libpng && brew link libpng --force 修复

      【讨论】:

        猜你喜欢
        • 2011-04-18
        • 2011-01-24
        • 2011-05-02
        • 2012-02-19
        • 2011-02-19
        • 2015-01-09
        • 2011-02-26
        • 1970-01-01
        • 2018-04-13
        相关资源
        最近更新 更多