linux下写一个firefox插件
申博厚
2023-12-01
linux下写一个firefox插件
2011年03月19日
https://developer.mozilla.org/en/Gecko_SDK 开发包
http://mirrors.directorymix.com/mozilla/xulrunner/releases/1.9.1.2/sdk/
[b]Linux [/b][b]命令行下快速安装[/b][b]Firefox3.0.1[/b]
[b]看到有网友介绍的在[/b][b] Linux [/b][b]命令行下只需要复制一条命令,就可以安装好[/b][b]Firefox 3 [/b][b]之后,自己也试了一下,果然很方便,有必要在这里提一下。其实这条命令可以扩展一下,大家只要将命令中[/b][b]Firefox [/b][b]在[/b][b] Mozilla FTP [/b][b]的路径改一下,就可以快速的安装所有版本的[/b][b]Firefox [/b][b]了(比如这个就是安装最新版的[/b][b]3.0.1[/b][b]的命令):[/b][b][/b]
[b]# wget -P ~ftp://ftp.mozilla.org/pub/firefox/releases/3.0.1/linux-i686/zh-CN/firefox-3.0.1.tar.bz2&& tar xjf ~/firefox-3.0.1.tar.bz2 -C ~ [/b]
[b] [/b]
[b]ftp://ftp.mozilla.org/pub/firefox/releases[/b]
[b]=======================================[/b][b][/b]
[b] [/b]
[b]在[/b][b]linux[/b][b]下写一个[/b][b]firefox[/b][b]插件[/b][b][/b]
相信看到这篇文章的人很明白firefox插件这个概念。不过这里我还是想不厌其烦的再说一下。
很多人很多地方都混淆了firefox extension和plugin这两个概念。什么是extension,字面意思看就是个扩展,当你安装了个extension后你肯定会在你浏览器的某个地方找到其安装的痕迹,它是对于浏览器功能的扩展,只要你不关浏览器就一直作用着。而plugin则是对某个具体的页面而言。当你页面中声明了一个embed后,浏览器则会在你的browser相应的目录中去找有没有对应的mimetype,有的话则可调用插件里相应的函数,所以插件其实是对网页而言的,只要你不声明你这个网页需要这个插件,那么你不会感到你已经安装有插件的。
言归正传,这里我想说的是如何在linux下写一个firefox插件,其实很简单,只是因为当自己想去开发时一是本身对linux不够熟悉,二是网上确实缺少相应的资料,所以想把这小小的心得写下来,还请大大们见谅。如果你在windows开发plugin的话,那么本文你可以跳过了,官网有更详细的资料,以及一篇更好的中文版文章,根据这些,我保证你肯定能生成一个简单的dll文件。
robertleepeak.javaeye.com/blog/348304
如果你也像我一样对linux不熟悉而摸不着头脑的时候,那么我希望本文对你有用。
首先,无论你在哪个平台下开发,你都得先去下载相应的sdk开发包
developer.mozilla.org/en/Gecko_SDK
下载完之后解压到你喜欢的位置,我这里是root/xulrunner
之后就去下载官网上的sample代码
mxr.mozilla.org/seamonkey/source/modules/plugin/samples/npruntime/
这里我们用的是这个npruntime这个程序,你现在要做的就是把这个页面下的所有.cpp和.h文件下载下来。你说.def和.rc呢?很不幸,我也不知道他们是干什么的,但我知道在linux下只要上面这些就够了。
如果你不会下载的话,就去参考上面那篇文章吧!
robertleepeak.javaeye.com/blog/348304
与windows不同的是下面你做的将更为简单。甚至这篇文章只要这一句就够了。
把你所下的.cpp和.h放到同一目录下,在shell里切换到这个目录,输入
g++ -I root/xulrunner/include -I root/xulrunner/include/java -Iroot/xulrunner/include/nspr -I root/xulrunner/include/plugin -shared -olibnprt.so np_entry.cpp npp_gate.cpp npn_gate.cpp plugin.cpp
是不是已经看出来了,这只是个简单的在GNU下编译的命令,并没有特别的要修改的。其实就是这个样子,对于一个程序而言,你所做的只是让它能成功编译而已,至于windows下用IDE所做的那些事情,我是不知道为什么的,我只知道我这个程序就是把所有的cpp文件编译成一个目标文件libnprt.so而已。
下面就稍微解释下吧。
g++ GNU的c++编译器,如果是c文件就用gcc
-I 这个是大写的i 哦,这个参数的作用就是添加编译这个程序所要的外部附加库,所以这里我就把编译这些.cpp的所有需要的include都加了进去
-shared 编译共享库文件
-o 定义要生成文件的名字
最后就是编译这个文件所有的cpp文件了。
你说编译有错误?同样参考的还是上面那篇文章
robertleepeak.javaeye.com/blog/348304
/* 加入