尝试 apr 开发,什么都没有做,就是 include 了一下 apr.h,就出了这个错误.
上网搜了一下,很多人都碰到该故障,包括 xjb 同学
质疑 apache 的代码而动手改之可不是我的风格,仔细在 google 里面查找结果,发现编译应该用 pkg-config 来自动配置编译参数
cc foo.c -o foo `pkg-config apr-1 --cflags`
联想到另外一个很常见的库 glib 也是用 pkg-config 来自动的配置的,所以建议在引用别人的库之前(尤其是这种系统预编译好的),先检查一下 /usr/lib/pkgconfig/ 目录下,看看有没有对应的 .pc 存在
Update: 我系统上 pkg-config 的结果就是 -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -I/usr/include/apr-1.0
Topic:
技术
评论
多平台交叉编译的时
多平台交叉编译的时候,使用.pc文件来配置编译和链接的参数更加重要。
apr的内存池用起来感
apr的内存池用起来感觉灵活性不够。
1, 自己新写的函数如果要使用apr中的函数也要增加一个参数apr_pool_t.
2,如果要使用其他第三方的库, 比如GMime, GMime本身使用了GLib,这时候程序中同时使用了apr和GLib, 不同的库有不同的内存分配方法。掺在一起使用还是挺头疼的。
apr
apr 最适用在服务器场合。每个线程退出的时候销毁自己的 pool,避免资源泄露。
glib 适合 C 程序员完成那种一次性的工作,或者写一个库什么的。可以说是除了 unix 标准 C 库外程序员最应该掌握的函数库了。
两手都要抓,两手都要硬