|
我在FC3 KDevelop下随便写了一个很小的test,如下:
1.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <iostream>
#include <cstdlib>
#include "pbm.h"
using namespace std;
int main( int argc, char** argv )
{
pbm_init(NULL, NULL);
bit **bits = NULL;
bits = pbm_allocarray(640,480);
}
2.
添加 "/usr/include" 到我工程的include中, 该目录包括 pbm.h (我想,这个include目录已经包含了我所有需要的头文件,即安装netpbm-10.25.rpm所能得得到的所有头文件都在该目录下)
3.
添加 "-lnetpbm" 作为我工程的动态联接库(这个库在/usr/lib下,可以不用指定路径),我不知道是不是还有其它的库需要添加以支持netpbm动态联接库...
4.
编译文件,通过!!
5.
联接生成可执行文件,失败!!显然是联接错误!!. 有人知道我还少哪些东西吗???我几乎肯定以上程序中的两个函数 `pbm_init(int*, char**)' 和`pm_allocarray(int, int, int)'就编到了 netpbm库中. 并且我试过去用静态联接库,还是不对!!肯定是少联接了其它必要的库,或者....实在搞不懂了!!高手指点啊.是不是少哪个系统库文件???以下是整个联接报告的消息:
cd '/home/pjia/programs/netpbm_test/debug' && WANT_AUTOCONF_2_5="1" WANT_AUTOMAKE_1_6="1" gmake -k
gmake all-recursive
Making all in src
/bin/sh ../libtool --mode=link --tag=CXX g++ -O0 -g3 -o netpbm_test netpbm_test.o -lnetpbm
g++ -O0 -g3 -o netpbm_test netpbm_test.o -lnetpbm
netpbm_test.o(.text+0x120): In function `main':
/home/pjia/programs/netpbm_test/src/netpbm_test.cpp:36: undefined reference to `pbm_init(int*, char**)'
netpbm_test.o(.text+0x13e):/home/pjia/programs/netpbm_test/src/netpbm_test.cpp:38: undefined reference to `pm_allocarray(int, int, int)'
collect2: ld returned 1 exit status
gmake[2]: *** [netpbm_test] Error 1
gmake[2]: Target `all' not remade because of errors.
gmake[1]: *** [all-recursive] Error 1
gmake: *** [all] Error 2
*** Exited with status: 2 ***
Thank you very much |
|