官方文档在这里, 很详细.
仔细看来下, 由于POCO为了能够跨平台用在Windows下编译, 用的是它自己的一套Build system, 而不是标准的AutoConf, automake那一套.
正常的编译配置是:
1 | ./configure --omit=Data/ODBC,Data/SQLite --prefix=/usr --cflags=-fPIC --cflags=-std=c++11 --static --shared --no-tests --no-samples |
--cflags=-std=c++11
选项要求GCC版本支持C++11,这样正常编译后make install会将POCO静态库和动态库安装在: prefix/lib64目录下.
后来为了编译32位版本, 简单的加了个参数--cflags=-m32
, 结果这样只能编译出目标文件, 因为是强制在CFLAGS上加的-m32
, 加了LDFLAGS="-m32"
也无效,后来才看了下它的configure, 根本也不支持LDFLAGS参数,不是autoconf生成的, 只是一个shell.
接下来才回到上面的官方文档去查询, 找到了POCO_BASE/build/rules/目录下的几个配置文件,才了解它需要的配置参数(或者说是环境变量),这个目录下的global文件是主要的配置,关键几行在下面:
1 | # |
嗯, 就需要这几个环境变量, 还是用上面的configure命令的话, 就还需要设置下面几个环境变量:
1 | export DYLIBFLAGS="-m32" |
这样就可以了.