2010年三月月 发布的文章

工作装备更新了

这里卖了个小关子,所谓工作装备就是指我的笔记本。

本周三伴随了我三年多的R系Thinkpad终于因显卡故障再也无法正常启动了,至于它是否就此光荣退役,那还要看设备修理部门同事是否能修好它。

我这边只能重新申请装备了。公司近两年采购的办公设备都是HP的,HP的东西质量如何想必大家通过今年央视的"3.15"晚会也都有所了解了,商用采购的设备质量也好不了哪去,黑屏、蓝屏、过热、烧主板的情况我从使用HP本子的同事那听得多了。今年公司采购似乎有所改变,新采购的台式机都已经换成了LENOVO,挺漂亮的。目前还不知道新本子是否也是联想的,很有可能是Thinkpad哦,现在Thinkpad价格也不再那么高高在上了。不过我这可没法等下去。我呢,是个不折不扣的Thinkpad Fans,虽谈不上死忠,但一般来说也是非Thinkpad不用。秘书那有新HP本子和二手Thinkpad本,我选择了后者,一台2006年采购的x60,12寸的小本。开始我也担心屏幕、键盘太小会影响平时编码,但是拿到手中后发现1024*768的屏幕并没有想象中的那么狭窄,键盘也是全尺寸键盘,除了右侧的ctrl键有些小外(因为增加了Win键的缘故)。X系就是轻巧,感觉总重量还不如我的那个双肩红点笔记本包呢,以后出差就更方便了,既节省空间也节省体力^_^。

本周四拿到机器,马上着手装系统、导数据。本子内存容量有些小,700多M应付XP还差不多,不过Win7着实也吸引着我(XP太老了),最终我选择了Windows 7。另外在硬盘分区时我为即将在下个月发布的Ubuntu 10.04预留了足够空间。

Microsoft的Win7的确是一款不错的OS,在我这台四年前配置的机器上跑依旧顺畅,如果是vista估计就没的跑了。不过内存太小还是会影响到运行大程序时的速度,内存和磁盘之间的数据交换比较频繁。

安装完我常用的应用程序集合:Launchy + GVIM + Firefox + Thunderbird + Foxit Reader + Google Pinyin + AVG Anti-Virus 之后,X60便正式进入工作状态了。

这里上一张新装备的靓照(左边的是前不久从美国给LP采购的T400

也谈Configure脚本问题的解决

开了一个下午的技术交流会,回到办公室时离下班时间已经不远,天气预报说今晚有暴雪,外面阴沉的天气似乎也证实了这一点。这时一个同事遇到了一个软件包编译的问题,一时无法解决,向我求助。

这是一个libmemcached的编译问题,我们用的是libmemcached 0.34版本,我的同事在PC Solaris上执行libmemcached的configure脚本时遇到如下错,Configure脚本提示:

checking for pthread-config… no
configure: error: could not find libpthread

但经过确认系统中明明在/usr/lib下有pthread相关库的存在:
Tony Bai-[~/libmemcached-0.34]526:>ll /usr/lib|grep pthread
lrwxrwxrwx   1 root     root          26 2009   9月 10 llib-lpthread.ln -> ../../lib/llib-lpthread.ln
lrwxrwxrwx   1 root     root          23 2009   9月 10 llib-lpthread -> ../../lib/llib-lpthread
lrwxrwxrwx   1 root     root          25 2009   9月 10 libpthread.so.1 -> ../../lib/libpthread.so.1*
lrwxrwxrwx   1 root     root          25 2009   9月 10 libpthread.so -> ../../lib/libpthread.so.1*

又确认了一下用户的环境变量设置,LD_LIBRARY_PATH也包含了这些库的目录。

经验告诉我,这个错误是假象,向上翻Configure的输出结果,的确发现些奇怪的Check结果,如下:

checking for ANSI C header files… no
checking for sys/types.h… no
checking for sys/stat.h… no
checking for stdlib.h… no
checking for string.h… no
checking for memory.h… no
checking for strings.h… no
checking for inttypes.h… no
checking for stdint.h… no
checking for unistd.h… no

第一感觉,这怎么可能呢?这些标准C库头文件居然都Check失败了!在网上用“checking for ANSI C header files… no”搜了一下,也没有找到很好的答案。

我对Configure了解也不多,但是还是让我发现了config.log这根救命稻草。config.log这个文件详细地记录了Configure的每一步校验的执行内容和结果,其中对于标准C头文件的Check是这样做的:

configure:4827: checking for ANSI C header files
configure:4857: gcc -c -g -O2 -m64  conftest.c >&5
conftest.c:1: sorry, unimplemented: 64-bit mode not compiled in
configure:4864: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| #define PACKAGE_NAME "libmemcached"
| #define PACKAGE_TARNAME "libmemcached"
| #define PACKAGE_VERSION "0.34"
| #define PACKAGE_STRING "libmemcached 0.34"
| #define PACKAGE_BUGREPORT "http://tangent.org/552/libmemcached.html"
| /* end confdefs.h.  */
| #include
| #include
| #include
| #include
|
| int
| main ()
| {
|
|   ;
|   return 0;
| }
configure:4995: result: no

再往下看,检测sys/types.h等标准库头文件的错误都是:
conftest.c:1: sorry, unimplemented: 64-bit mode not compiled in
configure:5047: $? = 1

看来并非是系统没有包含标准头文件,而是Configure采用了64-bit编译的方法去测试头文件存在的时候出错。随意创建一个testm64.c的源文件,输入:

/* testm64.c */
int main() {
    ;
    return 0;
}
用gcc -g -m64 testm64.c执行编译,得到与之前相同的错误结果:
testm64.c:1: sorry, unimplemented: 64-bit mode not compiled in

查看Gcc版本,发现是3.4.6,突然恍然大悟,这不是之前发现在Solaris 10 for x86上Gcc 64位编译的一个问题吗,在Solaris 10 for x86上如果要进行64位编译,要使用/usr/sfw/bin下的gcc 3.4.3版本,不能用3.4.6版本。

除了更换Gcc之外,如果你想编译32位版本的话,还可以这样来做:修改Configure脚本,打开Configure,将-m64字样全部删除。这样Configure后编译libmemcached就一切顺利了。

以上关于Configure脚本问题的解决方法,有一定的通用性,因此记之。

欢迎使用邮件订阅我的博客

输入邮箱订阅本站,只要有新文章发布,就会第一时间发送邮件通知你哦!

这里是 Tony Bai的个人Blog,欢迎访问、订阅和留言! 订阅Feed请点击上面图片

如果您觉得这里的文章对您有帮助,请扫描上方二维码进行捐赠 ,加油后的Tony Bai将会为您呈现更多精彩的文章,谢谢!

如果您希望通过微信捐赠,请用微信客户端扫描下方赞赏码:

如果您希望通过比特币或以太币捐赠,可以扫描下方二维码:

比特币:

以太币:

如果您喜欢通过微信浏览本站内容,可以扫描下方二维码,订阅本站官方微信订阅号“iamtonybai”;点击二维码,可直达本人官方微博主页^_^:
本站Powered by Digital Ocean VPS。
选择Digital Ocean VPS主机,即可获得10美元现金充值,可 免费使用两个月哟! 著名主机提供商Linode 10$优惠码:linode10,在 这里注册即可免费获 得。阿里云推荐码: 1WFZ0V立享9折!


View Tony Bai's profile on LinkedIn

文章

评论

  • 正在加载...

分类

标签

归档



View My Stats