2013-11-28 91 views
3

我正在为Elementary OS Luna上的Scratch文本编辑器应用程序编写扩展。但是这些文档对于扩展的创建实际上是不存在的,我不知道如何在编写扩展的主代码之后继续。如何生成.so文件

我已经写了扩展名。我无法使用或测试它,因为它需要“安装”。我花了数小时寻找文档,但他们不存在。但是,我没有找到暂存启动板页,上面写着

通常你需要生成一个pluginname.so文件,并把它放在 的lib /刮/插件/ pluginname与pluginname.plugin文件的注释

太好了。这似乎是为Scratch创建扩展的最后一部分。什么是.so文件,我怎么才能生成一个?我已经创建了其他必要的文件,如.plugin文件和.vala文件。

是的,我已经搜索过.so文件,但是我发现的所有东西都是随机的东西,就像使用C或C++头文件一样,但显然这对我来说不起作用,因为我使用Vala?

如何生成.so文件?我从什么生成它?

+1

这不是随机的!您可以使用生成.so文件的语言(如C/C++等)编写扩展,然后在临时应用程序中使用它。看到这个Q /一个http://stackoverflow.com/questions/9809213/what-are-a-and-so-files –

+0

@PreetSangha谢谢你的链接:-)顺便说一句,.so文件基本上像Windows中的DLL的? – uSeRnAmEhAhAhAhAhA

+0

你有其他资源吗?我不知道那个网页在说什么:( – uSeRnAmEhAhAhAhAhA

回答

1

Scratch Wiki

由于浏览器的安全限制,刮2.0不能直接 硬件设备进行交互。相反,硬件扩展附带 帮助程序应用程序,这是一个单独的应用程序,用户必须在其计算机上安装并运行 。 Scratch通过HTTP 请求与助手应用程序进行通信,助手应用程序会与硬件进行通信。在未来, 某些扩展可能会将其辅助应用程序打包为浏览器插件。

下面是创建和测试划痕扩展步骤:

  1. 创建扩展描述文件
  2. 创建您的助手应用程序并启动它
  3. 打开刮开2离线编辑器
  4. 进口扩展说明(按Shift并单击“文件”并从菜单中选择“导入实验扩展名”)
  5. 新的扩展块将出现在更多块调色板
  6. 测试你的扩展并迭代!

助手应用程序可以写在支持服务器套接字,如Python,Node.js的,Java和C等

就像你我身边维基追逐任何语言但我无法找到源代码示例。所以我能做的就是一般地解决你的问题。

如果你看Build .so file from .c file using gcc command line你会看到一个简单的.so可以创建。然而什么代码进入Scratch扩展我不知道。抱歉。

编辑:更多的使用谷歌搜索,我发现a sample from Nathan Dinsmore on GitHub that doesn't use C rather it uses JavaScript,虽然它不创建.so扩展名,它似乎有创建扩展的完整描述。他还提供了一对tutorials

编辑++:And here is another sample written in Java

+1

我想我们在这里谈论两件不同的事情。你链接到的Scratch Wiki似乎不是为了我认为你链接的是Scratch编程语言,并且你链接的样例是scratch语言的扩展,我认为这对我来说是如此令人困惑;没有任何资源可用于创建扩展** ** th e临时文本编辑器_。 – uSeRnAmEhAhAhAhAhA

+0

有两个Scratch's。 Linux发行版基本操作系统附带的Scratch Text Editor,然后是Scratch;一种编程语言。我正在为前者寻找资源。 – uSeRnAmEhAhAhAhAhA

+0

我无法使用链接到的那些页面中包含的信息,因为要创建Scratch扩展(它们是用Vala而不是C或C++编写的),您不会创建可执行文件,只需将它们另存为.vala文件即可。该教程依赖于可执行文件。我已经按照教程,但不可能生成.so文件,因为我没有可执行文件(你没有为Scratch文本编辑器扩展创建可执行文件) – uSeRnAmEhAhAhAhAhA

2

我觉得The Vala tutorial可帮助创建实际共享库共享对象

可以使用autotoolscmake或者你可以编译并直接在命令行中,从瓦拉教程引用链接共享库:

编制和使用连接命令行

瓦拉是尚不能直接创建动态或静态库。要创建库,请继续使用-c(仅编译) 切换并将目标文件链接到您最喜欢的链接程序,即 libtool或ar。

$ valac -c ...(source files) 
$ ar cx ...(object files) 

或编译中间的C代码使用gcc

$ valac -C ...(source files) 
$ gcc -o my-best-library.so --shared -fPIC ...(compiled C code files)... 
+0

+1 Vala教程描述了如何做得很好。 –

+1

谢谢@user,我会研究这个。看起来很有希望! :-D +1 – uSeRnAmEhAhAhAhAhA