119
最新文章
精华文章
119位订阅者
作者: robbin
链接:http://robbin.javaeye.com/blog/270682
发表时间: 2008年11月19日
声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!
...
作者: robbin 链接:http://robbin.javaeye.com/blog/270682 发表时间: 2008年11月19日
声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!
我在2008年7月11日写的博客文章:Facebook的成功秘诀是什么 - SNS之我见(一),提到Facebook可能的盈利方式:
Facebook的真正钱途在于从app开发商身上赚钱!我们看看淘宝网是怎么赚钱的就知道了:淘宝网开店不收费,但是你想成为诚信商家,你想进驻淘宝商城,你想在淘宝的搜索上面靠前,你想获得淘宝的高级服务,那么请乖乖交钱。而淘宝上面的大商家是很愿意掏这笔钱的,因为淘宝这个平台可以让他赚到更多的钱。
Facebook现在就是一门心思做平台,不做应用,尽量能开放的数据全部开放出去,不遗余力的培养app开发商,为app开放商创造最好的赚钱途径。Facebook就是一个巨大的网店,而app开发商就是上面免费租赁店面的商家,兜售自己的玩具,吸引用户来玩。app开发商可以去做网络招聘、 app开发商可以去做机票预定、app开发商可以去做电子商务,现在Facebook上面已经有几万个app了,其中真正赚钱的app还不是特别丰富。等到Facebook平台上面有100万个赚钱的app商家的时候,Facebook再面向app商家推出增值服务,你可以想像一下到时候Facebook 赚钱是多么容易的事情。
日前Facebook平台开发团队在开发者论坛公布了收费的计划,请看:http://forum.developers.facebook.com/viewtopic.php?id=24375,你只要交纳375美元的费用,你开发的app就可以获得“被验证”的标志,并且会得到更多的推荐机会。
毫无疑问,Facebook正如我在4个月之前的预言一样,走上了向app开发者收费的路。
已有 23 人发表留言,猛击->>这里<<-参与讨论
JavaEye推荐
作者: robbin 链接:http://robbin.javaeye.com/blog/270682 发表时间: 2008年11月19日
声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!
我在2008年7月11日写的博客文章:Facebook的成功秘诀是什么 - SNS之我见(一),提到Facebook可能的盈利方式:
robbin 写道
Facebook的真正钱途在于从app开发商身上赚钱!我们看看淘宝网是怎么赚钱的就知道了:淘宝网开店不收费,但是你想成为诚信商家,你想进驻淘宝商城,你想在淘宝的搜索上面靠前,你想获得淘宝的高级服务,那么请乖乖交钱。而淘宝上面的大商家是很愿意掏这笔钱的,因为淘宝这个平台可以让他赚到更多的钱。
Facebook现在就是一门心思做平台,不做应用,尽量能开放的数据全部开放出去,不遗余力的培养app开发商,为app开放商创造最好的赚钱途径。Facebook就是一个巨大的网店,而app开发商就是上面免费租赁店面的商家,兜售自己的玩具,吸引用户来玩。app开发商可以去做网络招聘、 app开发商可以去做机票预定、app开发商可以去做电子商务,现在Facebook上面已经有几万个app了,其中真正赚钱的app还不是特别丰富。等到Facebook平台上面有100万个赚钱的app商家的时候,Facebook再面向app商家推出增值服务,你可以想像一下到时候Facebook 赚钱是多么容易的事情。
日前Facebook平台开发团队在开发者论坛公布了收费的计划,请看:http://forum.developers.facebook.com/viewtopic.php?id=24375,你只要交纳375美元的费用,你开发的app就可以获得“被验证”的标志,并且会得到更多的推荐机会。
毫无疑问,Facebook正如我在4个月之前的预言一样,走上了向app开发者收费的路。
已有 23 人发表留言,猛击->>这里<<-参与讨论
JavaEye推荐
- 加入阿里巴巴,发展潜力无限
- 搜狐网站诚聘Java、PHP和C++工程师
- Windows7在微软WinHEC 2008上揭开神秘面纱
- 你想过自己的博客制作成书吗 - JavaEye推出博客自动生成电子书功能!
作者: robbin
链接:http://robbin.javaeye.com/blog/269765
发表时间: 2008年11月19日
声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!
...
作者: robbin 链接:http://robbin.javaeye.com/blog/269765 发表时间: 2008年11月19日
声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!
今天的下午,确切的说是2008年11月18日的下午,当我的右手用鼠标点击在提交按钮上,将JavaEye博客电子书功能上线的新闻发布的这一刻,我承认我的手有一点点抖动,因为我清楚的知道,我们JavaEye团队创造了一项新的互联网功能,这个功能很可能在极短的时间内就被国内很多博客网站抄袭和跟进,并且为博客网站创造出新的商业模式。
在这项功能推出的几个小时以后,JavaEye网站用户的反馈如我们预期的那样好,很多朋友还通过MSN向我表达对这项功能的赞叹。其实博客制作电子书功能仅仅是我们想要分享给大家众多激动人心的创意之一,还有更多的好创意,我们会逐渐的揭开盖头,一一和大家见面。
还是隆重的推出我们的博客电子书介绍文章吧,这篇文章也是我精心修改了很多遍的推广文章:
你想过自己的博客制作成书吗?
JavaEye为博客用户新推出了一项很酷的小功能,你可以把自己的博客制作成为一本精美的PDF电子书籍!
现在就进入你的博客管理界面,在左边的博客管理列表下面点击“做电子书”
你可以看到整个电子书制作流程的向导,操作很简单,选择一下制作哪些博客文章,预览书籍的封面,满意的话点击“提交”按钮,耐心的等待30分钟以后,拥有自己版权的一本精美的PDF电子书籍就热气腾腾的诞生了!例如这份就是刚刚做好的电子书:robbin的博客文章精选: 2006年9月 - 2008年10月
也许你还想根据博客文章分类制作好几本不同的书籍,例如你想制作一本自己写的Java书籍,一本AJAX书籍,一本敏捷开发书籍,这都没有问题,我们为每个博客用户准备了5本书籍的存储空间,尽情的发挥你的写作才能吧。
你的电子书籍制作完成,你就可以把它共享出去了
然后在你的博客左侧导航就会出现“我的书籍”链接
如果你想看看别人制作的电子书,可以看博客频道的电子书排行榜
且慢,且慢欢呼,也许你想要的不仅仅是一本电子书籍,你还想要捧在手里的、沉甸甸的纸版书,不要着急,这项功能很快就会拥有,你需要的仅仅是一点点耐心。
最后,目前推出的电子书籍制作功能还是beta版本,对于外部网站导入的博客文章,以及用RichEditor编辑、排版复杂的文章的兼容性还不是很完美,所以你遇到任何问题,请到JavaEye站务论坛提交bug。
为什么要制作我的博客电子书籍呢?
JavaEye的博客制作电子书籍功能是很酷,但我为什么要制作自己的博客书籍呢?它对我来说有什么用?
1、这是最方便的文档在线撰写工具
你一定为寻找合适的文档在线撰写工具而苦恼过,微软Word?你无法在线撰写,无法方便的分享给别人;Google Docs?你会因为网页缓慢的加载速度而抓狂,生成的PDF排版难看无比,而且只能制作单篇文档的PDF;用wiki?哪个wiki有JavaEye博客这么简单易用,生成的PDF有JavaEye博客这么美观大方?怎么,你要还是不信,看看hideto的这本电子书hideto的ruby每天一剂良药,保证让你目瞪口呆。
2、这是树立个人品牌,传播个人名气,证明个人资历最好的方式
开一个博客定期撰写技术文章可以树立个人的品牌,但博客的文章组织形式太松散,你也不是每篇博客都是高质量的技术文章,所以博客并不能直观的代言你的品牌。然而当你从自己的博客中精心挑选出最好的文章制作为电子书籍分享出去的时候,情况就完全不同了。这本浓缩了技术精华的书就是你个人品牌的最好代言,有了这本书,会给你带来很多意想不到的机会:
1)你可以把这本书作为个人资历的参考附在简历后面,这将极大的增加你求职的成功率;
2)除了JavaEye网站,你还可以将自己的书上传到其他技术网站进行分享,广为传播,扩大自己在技术社区的知名度和号召力,这将迅速扩大你的个人名气,随后你将接到猎头们语气谦恭的电话,然后你傲慢的告诉他们,你手里已经有一大堆offer了,他的电话来的太晚;
3)你的电子书就是你自己的媒体传播途径,通过电子书你可以向IT行业发出自己的声音,JavaEye和各大技术书籍公司也有良好的合作关系,如果你有兴趣,你的电子书就是未来书籍公司给你出书的草稿了。
4)如果你承认自己不够厚道的话,那么你出书还有一个目的,就是可以为你追求女孩子增加一份不轻的筹码,对于光光们来说,这也是一个不小的诱惑。
3、这是最好最酷的博客备份功能
你可以定期的制作自己全部博客文章的电子书,这是最好的博客备份,确保你的博客文章不会丢失,而且还很方便阅读,携带和分享。
如果你的博客不在JavaEye,JavaEye还提供博客导入功能。在博客管理界面,点击博客导入,就可以将你的博客导入JavaEye,开始制作电子书。
那么你现在还在等什么? 制作你的电子书籍,然后到各大网站去分享吧!
还有更多...
今后我们的每月新闻摘要和论坛文章精选也会采用这种自动生成精美电子书的方式分享给大家,但更重要的是,我们还有更多同样激动人心的创意会逐渐提供给大家......
已有 135 人发表留言,猛击->>这里<<-参与讨论
JavaEye推荐
作者: robbin 链接:http://robbin.javaeye.com/blog/269765 发表时间: 2008年11月19日
声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!
今天的下午,确切的说是2008年11月18日的下午,当我的右手用鼠标点击在提交按钮上,将JavaEye博客电子书功能上线的新闻发布的这一刻,我承认我的手有一点点抖动,因为我清楚的知道,我们JavaEye团队创造了一项新的互联网功能,这个功能很可能在极短的时间内就被国内很多博客网站抄袭和跟进,并且为博客网站创造出新的商业模式。
在这项功能推出的几个小时以后,JavaEye网站用户的反馈如我们预期的那样好,很多朋友还通过MSN向我表达对这项功能的赞叹。其实博客制作电子书功能仅仅是我们想要分享给大家众多激动人心的创意之一,还有更多的好创意,我们会逐渐的揭开盖头,一一和大家见面。
还是隆重的推出我们的博客电子书介绍文章吧,这篇文章也是我精心修改了很多遍的推广文章:
你想过自己的博客制作成书吗?
JavaEye为博客用户新推出了一项很酷的小功能,你可以把自己的博客制作成为一本精美的PDF电子书籍!
现在就进入你的博客管理界面,在左边的博客管理列表下面点击“做电子书”
你可以看到整个电子书制作流程的向导,操作很简单,选择一下制作哪些博客文章,预览书籍的封面,满意的话点击“提交”按钮,耐心的等待30分钟以后,拥有自己版权的一本精美的PDF电子书籍就热气腾腾的诞生了!例如这份就是刚刚做好的电子书:robbin的博客文章精选: 2006年9月 - 2008年10月
也许你还想根据博客文章分类制作好几本不同的书籍,例如你想制作一本自己写的Java书籍,一本AJAX书籍,一本敏捷开发书籍,这都没有问题,我们为每个博客用户准备了5本书籍的存储空间,尽情的发挥你的写作才能吧。
你的电子书籍制作完成,你就可以把它共享出去了
然后在你的博客左侧导航就会出现“我的书籍”链接
如果你想看看别人制作的电子书,可以看博客频道的电子书排行榜
且慢,且慢欢呼,也许你想要的不仅仅是一本电子书籍,你还想要捧在手里的、沉甸甸的纸版书,不要着急,这项功能很快就会拥有,你需要的仅仅是一点点耐心。
最后,目前推出的电子书籍制作功能还是beta版本,对于外部网站导入的博客文章,以及用RichEditor编辑、排版复杂的文章的兼容性还不是很完美,所以你遇到任何问题,请到JavaEye站务论坛提交bug。
为什么要制作我的博客电子书籍呢?
JavaEye的博客制作电子书籍功能是很酷,但我为什么要制作自己的博客书籍呢?它对我来说有什么用?
1、这是最方便的文档在线撰写工具
你一定为寻找合适的文档在线撰写工具而苦恼过,微软Word?你无法在线撰写,无法方便的分享给别人;Google Docs?你会因为网页缓慢的加载速度而抓狂,生成的PDF排版难看无比,而且只能制作单篇文档的PDF;用wiki?哪个wiki有JavaEye博客这么简单易用,生成的PDF有JavaEye博客这么美观大方?怎么,你要还是不信,看看hideto的这本电子书hideto的ruby每天一剂良药,保证让你目瞪口呆。
2、这是树立个人品牌,传播个人名气,证明个人资历最好的方式
开一个博客定期撰写技术文章可以树立个人的品牌,但博客的文章组织形式太松散,你也不是每篇博客都是高质量的技术文章,所以博客并不能直观的代言你的品牌。然而当你从自己的博客中精心挑选出最好的文章制作为电子书籍分享出去的时候,情况就完全不同了。这本浓缩了技术精华的书就是你个人品牌的最好代言,有了这本书,会给你带来很多意想不到的机会:
1)你可以把这本书作为个人资历的参考附在简历后面,这将极大的增加你求职的成功率;
2)除了JavaEye网站,你还可以将自己的书上传到其他技术网站进行分享,广为传播,扩大自己在技术社区的知名度和号召力,这将迅速扩大你的个人名气,随后你将接到猎头们语气谦恭的电话,然后你傲慢的告诉他们,你手里已经有一大堆offer了,他的电话来的太晚;
3)你的电子书就是你自己的媒体传播途径,通过电子书你可以向IT行业发出自己的声音,JavaEye和各大技术书籍公司也有良好的合作关系,如果你有兴趣,你的电子书就是未来书籍公司给你出书的草稿了。
4)如果你承认自己不够厚道的话,那么你出书还有一个目的,就是可以为你追求女孩子增加一份不轻的筹码,对于光光们来说,这也是一个不小的诱惑。
3、这是最好最酷的博客备份功能
你可以定期的制作自己全部博客文章的电子书,这是最好的博客备份,确保你的博客文章不会丢失,而且还很方便阅读,携带和分享。
如果你的博客不在JavaEye,JavaEye还提供博客导入功能。在博客管理界面,点击博客导入,就可以将你的博客导入JavaEye,开始制作电子书。
那么你现在还在等什么? 制作你的电子书籍,然后到各大网站去分享吧!
还有更多...
今后我们的每月新闻摘要和论坛文章精选也会采用这种自动生成精美电子书的方式分享给大家,但更重要的是,我们还有更多同样激动人心的创意会逐渐提供给大家......
已有 135 人发表留言,猛击->>这里<<-参与讨论
JavaEye推荐
- 你想过自己的博客制作成书吗 - JavaEye推出博客自动生成电子书功能!
- Windows7在微软WinHEC 2008上揭开神秘面纱
- 加入阿里巴巴,发展潜力无限
- 搜狐网站诚聘Java、PHP和C++工程师
作者: robbin
链接:http://robbin.javaeye.com/blog/261176
发表时间: 2008年11月02日
声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!
...
作者: robbin 链接:http://robbin.javaeye.com/blog/261176 发表时间: 2008年11月02日
声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!
对大多数不从事Linux平台C语言开发的人来说,GNU gcc的一套工具和Linux平台的共享库的使用还是十分陌生的,其实我也不太熟悉,姑且写点基础知识,权当做备忘吧。
一、GNU gcc的编译工具用法
我们先来写一个简单的C程序:hello.c
定义了一个print_hello函数,调用main函数打印Hello World。
如何编译它呢?
-o参数指定生成的可执行程序的文件名, -O2是优化级别。该命令会编译生成hello可执行程序,看看这个文件:ls -l hello
有11KB大小。
看看他链接了哪些系统动态链接库,用ldd命令:
输出信息为:
libc是C语言标准函数库,ld是动态链接器。
接着我们看看hello这个程序里面有哪些符号,用nm命令:
输出:
中间省略了一些,不过我们还是可以在符号表里面找到函数定义。
hello有11KB,体积偏大,去处符号表可以给它瘦身,我们用strip命令:
然后再ls -l hello,输出为:
只有4.4KB了,瘦身效果明显! 不过这次符号表再也看不到了,nm hello,输出为:nm: hello: no symbols。
最后如果我们想从可执行程序里面提取出来一点什么文本信息的话,还可以用strings命令:
输出信息为:
友情提醒一下,如果你用Java写一个HelloWorld.java,编译以后你也可以用strings窥探一番。
二、动态共享库怎么使用
这次我们把hello.c拆开成为两个文件:hello.c和main.c。hello.c的代码是:
而main.c的代码是:
hello.c是我们的动态共享库,在hello.c里面我们声明和实现了各种公用的函数,最后main.c可以去调用这些公用函数。首先我们要把hello.c编译成为动态共享库:
-fPIC参数声明链接库的代码段是可以共享的,-shared参数声明编译为共享库。请注意这次我们编译的共享库的名字叫做libhello.so,这也是Linux共享库的一个命名的惯例了:后缀使用so,而名称使用libxxxx格式。
然后编译main.c的时候,我们需要更多的参数让gcc知道如何寻找共享库:
-L参数指定到哪个附加路径下面去寻找共享库,现在我们指定在当前目录下面寻找;
-l参数指定链接到哪个共享库上面,我们传的参数hello,那么gcc就会自动链接到libhello.so这个共享库上面(注意我们上面说的libXXXX.so命名规则);
-I参数指定到哪个附加路径下面去寻找h文件,这个我们没有使用。
最后我们成功编译好了main,执行一下,报错:
找不到libhello.so这个共享库,怎么回事?这是因为libhello.so并不在操作系统默认的共享库的路径下面,我们可以临时指定一下链接路径:
这样就成功了。我们用ldd main看一下:
这次main程序链接到了libhello.so这个共享库上面。
三、关于Linux的动态共享库的设置
可执行程序找不到要链接的动态共享库,这是Linux上面编译和运行程序很容易碰到的问题,通过上面的小例子,我们已经大致了解共享库的一点基本原理,接下来我们要探讨一下怎么设置程序寻找动态共享库的行为。
Linux操作系统上面的动态共享库大致分为三类:
1、操作系统级别的共享库和基础的系统工具库
比方说libc.so, libz.so, libpthread.so等等,这些系统库会被放在/lib和/usr/lib目录下面,如果是64位操作系统,还会有/lib64和/usr/lib64目录。如果操作系统带有图形界面,那么还会有/usr/X11R6/lib目录,如果是64位操作系统,还有/usr/X11R6/lib64目录。此外还可能有其他特定Linux版本的系统库目录。
这些系统库文件的完整和版本的正确,确保了Linux上面各种程序能够正常的运行。
2、应用程序级别的系统共享库
并非操作系统自带,但是可能被很多应用程序所共享的库,一般会被放在/usr/local/lib和/usr/local/lib64这两个目录下面。很多你自行编译安装的程序都会在编译的时候自动把/usr/local/lib加入gcc的-L参数,而在运行的时候自动到/usr/local/lib下面去寻找共享库。
以上两类的动态共享库,应用程序会自动寻找到他们,并不需要你额外的设置和担心。这是为什么呢? 因为以上这些目录默认就被加入到动态链接程序的搜索路径里面了。Linux的系统共享库搜索路径定义在/etc/ld.so.conf这个配置文件里面。这个文件的内容格式大致如下:
假设我们自己编译安装的ImageMagick图形库在/usr/local/ImageMagick目录下面,并且希望其他应用程序都可以使用ImageMagick的动态共享库,那么我们只需要把/usr/local/ImageMagick/lib目录加入/etc/ld.so.conf文件里面,然后执行:ldconfig 命令即可。
ldcofig将搜索以上所有的目录,为共享库建立一个缓存文件/etc/ld.so.cache。为了确认ldconfig已经搜索到ImageMagick的库,我们可以用上面介绍的strings命令从ld.so.cache里面抽取文本信息来检查一下:
输出结果为:
已经成功了!
3、应用程序独享的动态共享库
有很多共享库只被特定的应用程序使用,那么就没有必要加入系统库路径,以免应用程序的共享库之间发生版本冲突。因此Linux还可以通过设置环境变量LD_LIBRARY_PATH来临时指定应用程序的共享库搜索路径,就像我们上面举的那个例子一样,我们可以在应用程序的启动脚本里面预先设置LD_LIBRARY_PATH,指定本应用程序附加的共享库搜索路径,从而让应用程序找到它。
已有 3 人发表留言,猛击->>这里<<-参与讨论
JavaEye推荐
作者: robbin 链接:http://robbin.javaeye.com/blog/261176 发表时间: 2008年11月02日
声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!
对大多数不从事Linux平台C语言开发的人来说,GNU gcc的一套工具和Linux平台的共享库的使用还是十分陌生的,其实我也不太熟悉,姑且写点基础知识,权当做备忘吧。
一、GNU gcc的编译工具用法
我们先来写一个简单的C程序:hello.c
#include <stdio.h>
void print_hello() {
printf("Hello World\n");
}
int main(int argc, char argv[]) {
print_hello();
return 0;
}
定义了一个print_hello函数,调用main函数打印Hello World。
如何编译它呢?
gcc -o hello -O2 hello.c
-o参数指定生成的可执行程序的文件名, -O2是优化级别。该命令会编译生成hello可执行程序,看看这个文件:ls -l hello
-rwxr-xr-x 1 robbin users 11939 2008-11-02 13:48 hello
有11KB大小。
看看他链接了哪些系统动态链接库,用ldd命令:
ldd hello
输出信息为:
libc.so.6 => /lib64/tls/libc.so.6 (0x0000002a9566d000) /lib64/ld-linux-x86-64.so.2 (0x0000002a95556000)
libc是C语言标准函数库,ld是动态链接器。
接着我们看看hello这个程序里面有哪些符号,用nm命令:
nm hello
输出:
00000000005008f8 A __bss_start
000000000040043c t call_gmon_start
......
00000000004004f0 T main
0000000000500658 d p.0
00000000004004e0 T print_hello
U puts@@GLIBC_2.2.5
0000000000400410 T _start
中间省略了一些,不过我们还是可以在符号表里面找到函数定义。
hello有11KB,体积偏大,去处符号表可以给它瘦身,我们用strip命令:
strip hello
然后再ls -l hello,输出为:
-rwxr-xr-x 1 webuser users 4464 2008-11-02 13:56 hello
只有4.4KB了,瘦身效果明显! 不过这次符号表再也看不到了,nm hello,输出为:nm: hello: no symbols。
最后如果我们想从可执行程序里面提取出来一点什么文本信息的话,还可以用strings命令:
strings hello
输出信息为:
/lib64/ld-linux-x86-64.so.2 SuSE libc.so.6 puts __libc_start_main __gmon_start__ GLIBC_2.2.5 t fff Hello World
友情提醒一下,如果你用Java写一个HelloWorld.java,编译以后你也可以用strings窥探一番。
二、动态共享库怎么使用
这次我们把hello.c拆开成为两个文件:hello.c和main.c。hello.c的代码是:
#include <stdio.h>
void print_hello() {
printf("Hello World\n");
}
而main.c的代码是:
int main(int argc, char argv[]) {
print_hello();
return 0;
}
hello.c是我们的动态共享库,在hello.c里面我们声明和实现了各种公用的函数,最后main.c可以去调用这些公用函数。首先我们要把hello.c编译成为动态共享库:
gcc -o libhello.so -O2 -fPIC -shared hello.c
-fPIC参数声明链接库的代码段是可以共享的,-shared参数声明编译为共享库。请注意这次我们编译的共享库的名字叫做libhello.so,这也是Linux共享库的一个命名的惯例了:后缀使用so,而名称使用libxxxx格式。
然后编译main.c的时候,我们需要更多的参数让gcc知道如何寻找共享库:
gcc -o main -O2 -L. -lhello main.c
-L参数指定到哪个附加路径下面去寻找共享库,现在我们指定在当前目录下面寻找;
-l参数指定链接到哪个共享库上面,我们传的参数hello,那么gcc就会自动链接到libhello.so这个共享库上面(注意我们上面说的libXXXX.so命名规则);
-I参数指定到哪个附加路径下面去寻找h文件,这个我们没有使用。
最后我们成功编译好了main,执行一下,报错:
引用
./main: error while loading shared libraries: libhello.so: cannot open shared object file: No such file or directory
找不到libhello.so这个共享库,怎么回事?这是因为libhello.so并不在操作系统默认的共享库的路径下面,我们可以临时指定一下链接路径:
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
这样就成功了。我们用ldd main看一下:
libhello.so => ./libhello.so (0x0000002a9566d000) libc.so.6 => /lib64/tls/libc.so.6 (0x0000002a9576e000) /lib64/ld-linux-x86-64.so.2 (0x0000002a95556000)
这次main程序链接到了libhello.so这个共享库上面。
三、关于Linux的动态共享库的设置
可执行程序找不到要链接的动态共享库,这是Linux上面编译和运行程序很容易碰到的问题,通过上面的小例子,我们已经大致了解共享库的一点基本原理,接下来我们要探讨一下怎么设置程序寻找动态共享库的行为。
Linux操作系统上面的动态共享库大致分为三类:
1、操作系统级别的共享库和基础的系统工具库
比方说libc.so, libz.so, libpthread.so等等,这些系统库会被放在/lib和/usr/lib目录下面,如果是64位操作系统,还会有/lib64和/usr/lib64目录。如果操作系统带有图形界面,那么还会有/usr/X11R6/lib目录,如果是64位操作系统,还有/usr/X11R6/lib64目录。此外还可能有其他特定Linux版本的系统库目录。
这些系统库文件的完整和版本的正确,确保了Linux上面各种程序能够正常的运行。
2、应用程序级别的系统共享库
并非操作系统自带,但是可能被很多应用程序所共享的库,一般会被放在/usr/local/lib和/usr/local/lib64这两个目录下面。很多你自行编译安装的程序都会在编译的时候自动把/usr/local/lib加入gcc的-L参数,而在运行的时候自动到/usr/local/lib下面去寻找共享库。
以上两类的动态共享库,应用程序会自动寻找到他们,并不需要你额外的设置和担心。这是为什么呢? 因为以上这些目录默认就被加入到动态链接程序的搜索路径里面了。Linux的系统共享库搜索路径定义在/etc/ld.so.conf这个配置文件里面。这个文件的内容格式大致如下:
/usr/X11R6/lib64 /usr/X11R6/lib /usr/local/lib /lib64 /lib /usr/lib64 /usr/lib /usr/local/lib64 /usr/local/ImageMagick/lib
假设我们自己编译安装的ImageMagick图形库在/usr/local/ImageMagick目录下面,并且希望其他应用程序都可以使用ImageMagick的动态共享库,那么我们只需要把/usr/local/ImageMagick/lib目录加入/etc/ld.so.conf文件里面,然后执行:ldconfig 命令即可。
ldcofig将搜索以上所有的目录,为共享库建立一个缓存文件/etc/ld.so.cache。为了确认ldconfig已经搜索到ImageMagick的库,我们可以用上面介绍的strings命令从ld.so.cache里面抽取文本信息来检查一下:
strings /etc/ld.so.cache | grep ImageMagick
输出结果为:
/usr/local/ImageMagick/lib/libWand.so.10 /usr/local/ImageMagick/lib/libWand.so /usr/local/ImageMagick/lib/libMagick.so.10 /usr/local/ImageMagick/lib/libMagick.so /usr/local/ImageMagick/lib/libMagick++.so.10 /usr/local/ImageMagick/lib/libMagick++.so
已经成功了!
3、应用程序独享的动态共享库
有很多共享库只被特定的应用程序使用,那么就没有必要加入系统库路径,以免应用程序的共享库之间发生版本冲突。因此Linux还可以通过设置环境变量LD_LIBRARY_PATH来临时指定应用程序的共享库搜索路径,就像我们上面举的那个例子一样,我们可以在应用程序的启动脚本里面预先设置LD_LIBRARY_PATH,指定本应用程序附加的共享库搜索路径,从而让应用程序找到它。
已有 3 人发表留言,猛击->>这里<<-参与讨论
JavaEye推荐
- 你想过自己的博客制作成书吗 - JavaEye推出博客自动生成电子书功能!
- 搜狐网站诚聘Java、PHP和C++工程师
- Windows7在微软WinHEC 2008上揭开神秘面纱
- 加入阿里巴巴,发展潜力无限
作者: robbin
链接:http://robbin.javaeye.com/blog/260613
发表时间: 2008年10月31日
声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!
...
作者: robbin 链接:http://robbin.javaeye.com/blog/260613 发表时间: 2008年10月31日
声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!
《Rails锦囊妙计》这本书是dlee发起的,旨在面向Rails中高阶开发人员、指导实战的Rails书籍。这本书现在参与编写的人员是dlee,Quake Wang,liusong111,骆古道和我。dlee主要介绍REST方面的编程,Quake写的是ActiveRecord的编程技巧,liusong111介绍Controller和View方面的实战技巧,骆老师写的是jQuery on Rails和ActionMailer,而我主要负责性能和部署方面的内容。其他同志的进度情况请咨询dlee。
我拟定了一下我负责内容的章节,总共三章内容,列举如下,请大家提提建议,看看需要删除哪些内容,需要补充哪些内容,谢谢!然后我会根据这个目录开始写。
《Rails生产环境的安装和部署章节》
一、介绍和分析主流的Rails部署运行环境
1、Rails部署运行方式介绍
2、操作系统的选择:Red Hat Linux, CentOS, SuSE Linux,Ubuntu Linux,以及Windows
3、Rails运行服务器的选择:FastCGI,Passenger,Mongrel,Thin
4、Rails可选的Web服务器介绍:Lighttpd,Nginx,Apache
5、Rails部署运行主流方式介绍
二、Lighttpd/FastCGI部署运行环境的安装和配置
1、编译安装Lighttpd
2、配置Lighttpd/FastCGI
3、监控和调优Lighttpd
三、Nginx/Mongrel部署运行环境的安装和配置
四、Apache/Passenger部署运行环境的安装和配置
五、Apache/Mongrel部署运行环境的安装和配置
《Rails的性能调优和架构设计章节》
一、Rails部署运行环境的性能调优
1、操作系统的性能调优
2、数据库的性能调优
3、文件系统的选择
二、Ruby应用代码的性能调优
三、缓存策略和实战
1、对象缓存策略
2、页面片断缓存策略
3、动态页面静态化
4、基于REST资源的缓存策略
5、Memcached介绍
1)memcached安装和配置
2)memcached监测
3)memcached原理探讨
四、和内存泄漏问题的斗争
1、Ruby VM内存分配策略分析
2、内存泄漏原因分析
3、内存泄漏监测工具介绍
4、Ruby进程的监控
5、Session问题的讨论
1)选择Session存储策略
2)基于Cookie的Session策略介绍
6、设计Rails应用的系统架构
1)多进程和多线程之争
2)如何安排合理的进程数量
3)设计可扩展性的系统架构
《Ruby on Rails实战解决方案点滴章节》
一、如何实现泛域名解析和多域名博客网站开发
二、如何集成全文检索功能
三、如何实时记录用户的在线状态
四、如何管理大量附件的下载和同步
五、如何利用好Rails的production.log
六、JavaEye网站的架构演进过程
已有 58 人发表留言,猛击->>这里<<-参与讨论
JavaEye推荐
作者: robbin 链接:http://robbin.javaeye.com/blog/260613 发表时间: 2008年10月31日
声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!
《Rails锦囊妙计》这本书是dlee发起的,旨在面向Rails中高阶开发人员、指导实战的Rails书籍。这本书现在参与编写的人员是dlee,Quake Wang,liusong111,骆古道和我。dlee主要介绍REST方面的编程,Quake写的是ActiveRecord的编程技巧,liusong111介绍Controller和View方面的实战技巧,骆老师写的是jQuery on Rails和ActionMailer,而我主要负责性能和部署方面的内容。其他同志的进度情况请咨询dlee。
我拟定了一下我负责内容的章节,总共三章内容,列举如下,请大家提提建议,看看需要删除哪些内容,需要补充哪些内容,谢谢!然后我会根据这个目录开始写。
《Rails生产环境的安装和部署章节》
一、介绍和分析主流的Rails部署运行环境
1、Rails部署运行方式介绍
2、操作系统的选择:Red Hat Linux, CentOS, SuSE Linux,Ubuntu Linux,以及Windows
3、Rails运行服务器的选择:FastCGI,Passenger,Mongrel,Thin
4、Rails可选的Web服务器介绍:Lighttpd,Nginx,Apache
5、Rails部署运行主流方式介绍
二、Lighttpd/FastCGI部署运行环境的安装和配置
1、编译安装Lighttpd
2、配置Lighttpd/FastCGI
3、监控和调优Lighttpd
三、Nginx/Mongrel部署运行环境的安装和配置
四、Apache/Passenger部署运行环境的安装和配置
五、Apache/Mongrel部署运行环境的安装和配置
《Rails的性能调优和架构设计章节》
一、Rails部署运行环境的性能调优
1、操作系统的性能调优
2、数据库的性能调优
3、文件系统的选择
二、Ruby应用代码的性能调优
三、缓存策略和实战
1、对象缓存策略
2、页面片断缓存策略
3、动态页面静态化
4、基于REST资源的缓存策略
5、Memcached介绍
1)memcached安装和配置
2)memcached监测
3)memcached原理探讨
四、和内存泄漏问题的斗争
1、Ruby VM内存分配策略分析
2、内存泄漏原因分析
3、内存泄漏监测工具介绍
4、Ruby进程的监控
5、Session问题的讨论
1)选择Session存储策略
2)基于Cookie的Session策略介绍
6、设计Rails应用的系统架构
1)多进程和多线程之争
2)如何安排合理的进程数量
3)设计可扩展性的系统架构
《Ruby on Rails实战解决方案点滴章节》
一、如何实现泛域名解析和多域名博客网站开发
二、如何集成全文检索功能
三、如何实时记录用户的在线状态
四、如何管理大量附件的下载和同步
五、如何利用好Rails的production.log
六、JavaEye网站的架构演进过程
已有 58 人发表留言,猛击->>这里<<-参与讨论
JavaEye推荐
- 加入阿里巴巴,发展潜力无限
- Windows7在微软WinHEC 2008上揭开神秘面纱
- 你想过自己的博客制作成书吗 - JavaEye推出博客自动生成电子书功能!
- 搜狐网站诚聘Java、PHP和C++工程师
作者: robbin
链接:http://robbin.javaeye.com/blog/256961
发表时间: 2008年10月23日
声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!
今天看了一下开心001网站的Google Trends数据:...
作者: robbin 链接:http://robbin.javaeye.com/blog/256961 发表时间: 2008年10月23日
声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!
今天看了一下开心001网站的Google Trends数据: http://trends.google.com/websites?q=kaixin001.com,其中“Also visited”这一项表明用户还访问了其他哪些网站。或者我们也许可以通过这一项数据窥视一下哪些用户更喜欢使用开心网。以下是截图:
在“Also visited”列出的10个网站当中可以划分为几类:
1、李鬼类网站
比方说kaixin.com,kxlive.cn,顶着开心的名字,以假乱真,以博取开心001的流量,而且看起来这种策略还非常成功。
2、白领生活类网站
比方篱笆网、大众点评网、丁丁地图、北京公交网,这也似乎说明了开心001的用户以北京、上海等大城市白领为主的用户构成,像篱笆、大众点评、丁丁都是上海的网站。
3、IT专业类网站
比方海内、5G、cnbeta和JavaEye。也许王兴不希望海内定位在IT行业人士的用户构成上,但是目前看来海内还没有摆脱这个定位;5G是互联网研究方面的SNS,cnbeta则是互联网草根媒体资讯网站。看来IT专业人士都还是挺认真的卧底开心001的。
最后我非常惊讶的发现JavaEye网站也赫然在列,JavaEye是一个专业软件开发者社区,怎么会出现在这里? 难道JavaEye的用户很喜欢开心001这种模式?
BTW: 以同样的方式看看xiaonei.com和51.com也挺有分析价值的,可以很清楚的看出来网站的用户构成。校内的用户还是集中在学生群体,而51的用户主要和QQ重叠。
已有 8 人发表留言,猛击->>这里<<-参与讨论
JavaEye推荐
作者: robbin 链接:http://robbin.javaeye.com/blog/256961 发表时间: 2008年10月23日
声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!
今天看了一下开心001网站的Google Trends数据: http://trends.google.com/websites?q=kaixin001.com,其中“Also visited”这一项表明用户还访问了其他哪些网站。或者我们也许可以通过这一项数据窥视一下哪些用户更喜欢使用开心网。以下是截图:
在“Also visited”列出的10个网站当中可以划分为几类:
1、李鬼类网站
比方说kaixin.com,kxlive.cn,顶着开心的名字,以假乱真,以博取开心001的流量,而且看起来这种策略还非常成功。
2、白领生活类网站
比方篱笆网、大众点评网、丁丁地图、北京公交网,这也似乎说明了开心001的用户以北京、上海等大城市白领为主的用户构成,像篱笆、大众点评、丁丁都是上海的网站。
3、IT专业类网站
比方海内、5G、cnbeta和JavaEye。也许王兴不希望海内定位在IT行业人士的用户构成上,但是目前看来海内还没有摆脱这个定位;5G是互联网研究方面的SNS,cnbeta则是互联网草根媒体资讯网站。看来IT专业人士都还是挺认真的卧底开心001的。
最后我非常惊讶的发现JavaEye网站也赫然在列,JavaEye是一个专业软件开发者社区,怎么会出现在这里? 难道JavaEye的用户很喜欢开心001这种模式?
BTW: 以同样的方式看看xiaonei.com和51.com也挺有分析价值的,可以很清楚的看出来网站的用户构成。校内的用户还是集中在学生群体,而51的用户主要和QQ重叠。
已有 8 人发表留言,猛击->>这里<<-参与讨论
JavaEye推荐
- 加入阿里巴巴,发展潜力无限
- 搜狐网站诚聘Java、PHP和C++工程师
- 你想过自己的博客制作成书吗 - JavaEye推出博客自动生成电子书功能!
- Windows7在微软WinHEC 2008上揭开神秘面纱
收录该频道的主题秀
-
搜索不到您的频道?
>立即加入 -
想与您的读者互动?快来认领您的频道
>立即认领 -
想知道您的博客详细订阅数据么?
>到FeedSky查看 -
想体验专业的博客托管服务么?
>注册BlogBus


