【问题标题】:How to specify the include and lib path of pgm library when making PCA-SIFT code制作PCA-SIFT代码时如何指定pgm库的include和lib路径
【发布时间】:2016-02-27 07:50:10
【问题描述】:

我正在尝试在此网页中制作 PCA-SIFT 代码 (pasift-0.91nd.tar.gz):http://www.cs.cmu.edu/~yke/pcasift/。运行 ./configure 就OK了,make命令报C编译器找不到头文件pgm.h:

image.cc:18:22:致命错误:pgm.h:没有这样的文件或目录 #包括 ^ 编译终止。

互联网上有一个网页讨论了这个问题:http://ubuntuforums.org/showthread.php?t=1918422。最后给出了解决方案:

显然,头文件在目录/usr/include/pgm-5.1 - 编译时将其放入包含目录的首选方法是使用 pkgconfig。您将需要添加类似 pkg-config --cflags openpgm-5.1 在编译结束时 命令以获取正确的标题并将pkg-config --libs openpgm-5.1 添加到您的链接命令中。

,但我无法理解。具体来说,“在编译命令末尾添加pkg-config --cflags openpgm-5.1”是什么意思?我应该怎么做,从字面上添加pkg-config --cflags openpgm-5.1 或此命令在终端中返回的结果?并添加到什么文件? Makefile 由 ./configure 生成。我应该添加到 Makefile 还是 ./configure?我已经成功安装了 libpgm-dev,它们确实在 /usr/include/pgm-5.1 中。命令pkg-config --cflags openpgm-5.1 返回-I/usr/include/pgm-5.1 -I/usr/lib/x86_64-linux-gnu/pgm-5.1/include,命令pkg-config --libs openpgm-5.1 返回-lpgm -lpthread -lm

由于该线程已关闭,我不得不在这里问。希望熟悉Linux编译过程的人可以帮助我解决这个问题。非常感谢。

【问题讨论】:

    标签: linux makefile include-path pkg-config


    【解决方案1】:

    我自己解决了这个问题。

    原问题中提到的 ubuntuforums.org 网页中的所有内容都是错误的;这就是我遇到这么多问题的原因。

    错误一:使用sudo apt-get install libpgm-dev安装libpgm-dev是错误的。 我们应该下载Netpbm,解压后运行如下命令:

    ./configure      //type none on prompt if you don't have JPEG, TIFF, etc. libraries
    make
    sudo make package pkgdir=netpbmpkg
    sudo ./installnetpbm
    sudo rm -f -r /netpbmpkg/
    

    然后在 Ubuntu 上安装 Netpbm。

    错误2.pkg-config --cflags返回的包含路径错误

    默认情况下,包含路径为/usr/local/netpbm/include,库路径为/usr/local/netpbm/lib

    错误3.pkg-config --libs返回的链接选项-lpgm错误

    正确的链接选项应该是-lnetpbm

    按照正确的方法,我可以在Netbeans中成功编译项目(忘记命令行make)。

    【讨论】:

    • 嘿,我也遇到了同样的问题,你能告诉我这行应该如何执行吗?“sudo make package pkgdir=netpbmpkg”我不知道该放什么。你也提到了什么是错的,你能告诉如何正确设置它,或者你是否能指出任何详细的过程也很好..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多