如何在c中链接pnglite库?

如何在c中链接pnglite库?,c,linker,libraries,kubuntu,C,Linker,Libraries,Kubuntu,我从kubuntu的包管理安装了这个方便的pnglite库。它只包含一个头文件“pnglite.h”和一个对象文件“pnglite.o”。我已经找到了那些文件的位置,但我不知道如何链接它们。我正在使用netbeans,但不知道如何在其中链接它们。我也不明白如何在控制台上链接它们 我有一个小测试程序,我想测试,但我得到了错误消息“未定义的函数引用:XXXXXXX”。netbeans和控制台我都在使用gcc。头文件在/usr/include目录中,对象文件在/usr/lib目录中,测试程序在主目录的

我从kubuntu的包管理安装了这个方便的pnglite库。它只包含一个头文件“pnglite.h”和一个对象文件“pnglite.o”。我已经找到了那些文件的位置,但我不知道如何链接它们。我正在使用netbeans,但不知道如何在其中链接它们。我也不明白如何在控制台上链接它们

我有一个小测试程序,我想测试,但我得到了错误消息“未定义的函数引用:XXXXXXX”。netbeans和控制台我都在使用gcc。头文件在/usr/include目录中,对象文件在/usr/lib目录中,测试程序在主目录的编程目录下

我应该把头和对象放在源所在的同一个目录中吗?或者有没有办法将它们从当前位置链接起来?我知道应该可以从他们目前的位置将他们联系起来,我想知道并理解如何做到这一点


任何帮助都将不胜感激:)

您只需将
/usr/lib/pnglite.o
添加到您的gcc链接调用中,以及
pnglite
所需的任何共享库(从您的评论来看,它似乎需要zlib)。例如,如果您的源代码位于
myapp1.c
myapp2.c
中,则:

gcc -c myapp1.c
gcc -c myapp2.c
gcc -o myapp myapp1.o myapp2.o /usr/lib/pnglite.o -lz

谢谢你的回答。我想这在一般情况下是可以做到的。我试过了,但是现在我收到了很多错误消息,其中提到pnglite.o说“未定义对‘crc32’的引用”。不知道这是怎么回事。你的链接器失败,因为你的应用程序或pnglite.o使用的资源crc32不在编译的对象文件或共享库中。。您是否使用了与不使用pnglib构建时相同的共享库?@zaplec:pnglite对象似乎需要与某些共享库进行链接-例如
crc32
在zlib中,因此您也将
-lz
添加到链接行中(我已更新了答案)。谢谢caf。现在它开始工作了,我的错误是我没有仔细阅读pnglite的文档,因为那里说pnglite使用zlib。对他们来说,打包这样的库真的很奇怪。即使它只是一个单独的对象,它也应该是一个适当的共享对象,否则就会出现这种混乱。更不用说对库的更新不会影响已链接的程序。您确定在/usr/lib中没有.so吗?