首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

CPPCMS 在MAC上的装配与编译

2012-07-27 
CPPCMS 在MAC上的安装与编译问题描述:按照官网的步骤,进行如下操作1.?tar xzvf cppcms-1.0.1.tar.gz2. cd

CPPCMS 在MAC上的安装与编译

问题描述:按照官网的步骤,进行如下操作

1.?tar xzvf cppcms-1.0.1.tar.gz

2. cd cppcms-1.0.1

3. mkdir build

4. cd build

5. cmake -DCMAKE_INSTALL_PREFIX=/opt/local ..

编译过程中,出现了如下错误信息

?

Linking CXX shared library libbooster.dylib

? ? ? ? Undefined symbols for architecture x86_64:

? ? ? ? "_libiconv_close",

? ? ? ? referenced from: booster::locale::conv::impl::iconverter_base::~iconverter_base()in codepage.cpp.o ? ? ? ? ? ? ? ? booster::locale::conv::impl::iconverter_base::~iconverter_base()in codepage.cpp.o

? ? ? ? ??

? ? ? ? ld: symbol(s) not found for architecture x86_64

? ? ? ? collect2: ld returned 1 exit status

? ? ? ? make[2]: *** [booster/libbooster.0.0.0.dylib]?Error 1

? ? ? ? make[1]: *** [booster/CMakeFiles/booster.dir/all] Error 2

? ? ? ? make: *** [all] Error 2


问题解决:乍看编译错误信息,很有可能被“symbol(s) not found for architecture x86_64”误导,因为看到这句话还以为系统中的库函数接口是32bit的,而非cppcms所要求的64bit的。于是乎,动手查询libiconv 64bit库,废了一番周折也没查到64位的库函数,倒是很容易找到32位的库。心想,我的macbook pro肯定是32位的(根据安装mysql的经验,足以判断出我的系统是32位的,而不是64位的)所以不如所幸编译安装下载的32位的libiconv库吧。
? ? ? ? ?这里插句,我是如何知道是libiconv库的,因为在编译错误中提示_libiconv_close的函数调用时出现的编译错误,所以google一下这个函数,就知道来自libiconv库了。这个库是gnu开源的字符集转换库。如果正常在linux上, 当然就是老套的编译安装步骤了(./configure --prefix=.., make, make install). 但是在mac上,我使用了macports。?
1. port search libiconv2. sudo port install libiconv
安装完毕后,重新进行cppcms的编译安装过程,安装顺利完成。结论:实际上编译错误x86_64的编译错误给予我一个误导信息,通常这种错误是因为系统缺少安装cppcms所需要的库。建议,按照官网的要求,将必需的和推荐库,甚至可选的库一并安装到系统后,再编译安装cppcms.

热点排行