当前位置: 技术问答>linux和unix
freebsd编程的头文件问题
来源: 互联网 发布时间:2015-10-27
本文导语: 初次使用FREEBSD,有几个新手问题: 我编程解析XML的时候需要用到libxml2,系统是FreeBSD5.4,一开始使用pkg_add -r libxml2,安装完毕后,调试libxml2自带的一个例子程序: #include #include #include #include #include 提示...
初次使用FREEBSD,有几个新手问题:
我编程解析XML的时候需要用到libxml2,系统是FreeBSD5.4,一开始使用pkg_add -r libxml2,安装完毕后,调试libxml2自带的一个例子程序:
#include
#include
#include
#include
#include
提示找不到文件xmlmemory.h和parser.h
于是参考文档,使用
./configure
make
make install
安装了一遍,编译依然是这个错误,然后按照文档里面在编译的时候加上`xml2-config --cflags --libs`,编译通过了。
请问为什么不加这个就找不到文件,我的PATH里面有目录/usr/local/include,而且这些头文件也确实在这个目录下。
第二个问题是将XML从UTF-8转成GB2312的时候,需要用到libiconv库,于是按照上面的方式安装,编译后依然报错。
找不到文件#include
可是我的PATH是
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin:/home/test/bin:/usr/local/include
iconv.h这个文件也在/usr/local/include下面存在,
于是我把包含的地方改成
#include
编译不报找不到文件的错误了,但是报
/var/tmp//ccyyNmtY.o(.text+0x10): In function `Convert(char*, char*, char const*)':
: undefined reference to `libiconv_open'
而这个库不象上一个库那样能生成一个xml2-config这样的程序,所以我解决不了,请大家帮帮忙,谢谢!
我编程解析XML的时候需要用到libxml2,系统是FreeBSD5.4,一开始使用pkg_add -r libxml2,安装完毕后,调试libxml2自带的一个例子程序:
#include
#include
#include
#include
#include
提示找不到文件xmlmemory.h和parser.h
于是参考文档,使用
./configure
make
make install
安装了一遍,编译依然是这个错误,然后按照文档里面在编译的时候加上`xml2-config --cflags --libs`,编译通过了。
请问为什么不加这个就找不到文件,我的PATH里面有目录/usr/local/include,而且这些头文件也确实在这个目录下。
第二个问题是将XML从UTF-8转成GB2312的时候,需要用到libiconv库,于是按照上面的方式安装,编译后依然报错。
找不到文件#include
可是我的PATH是
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin:/home/test/bin:/usr/local/include
iconv.h这个文件也在/usr/local/include下面存在,
于是我把包含的地方改成
#include
编译不报找不到文件的错误了,但是报
/var/tmp//ccyyNmtY.o(.text+0x10): In function `Convert(char*, char*, char const*)':
: undefined reference to `libiconv_open'
而这个库不象上一个库那样能生成一个xml2-config这样的程序,所以我解决不了,请大家帮帮忙,谢谢!
|
你直接在命令行执行
xml2-config --cflags --libs
看输出什么东西,直接加到你的编译命令行里也可以的
搜索头文件不是用PATH,而是在编译时指定,比如:
gcc -I/usr/local/include ......
同样,你的iconv也需要链接相应的库,我不知道是什么,假设是/usr/lib/libiconv.so
那么编译命令是:
gcc -I/usr/local/include ...... -liconv
xml2-config --cflags --libs
看输出什么东西,直接加到你的编译命令行里也可以的
搜索头文件不是用PATH,而是在编译时指定,比如:
gcc -I/usr/local/include ......
同样,你的iconv也需要链接相应的库,我不知道是什么,假设是/usr/lib/libiconv.so
那么编译命令是:
gcc -I/usr/local/include ...... -liconv